When no SIMD width is set, incorrect code can be generated for TinyVector/TinyMatrix assignments because the pragmas that certify that the expression is aligned are in force even though alignment is not guaranteed. The following test code generates a segfault if compiled with icpc -O3 and no simd width set:
std::vector<TinyVector<double,3> > a;
(For some reason it only happens with a std::vector, not a stack array, and only if the assignment is from a different-sized type.)
Log in to post a comment.