https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109230
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Full self-contained testcase, PASSes with -O0, FAILs on aarch64-linux with -O2: #if __SIZEOF_FLOAT__ == __SIZEOF_INT__ typedef float V __attribute__((vector_size (4 * sizeof (float)))); typedef int VI __attribute__((vector_size (4 * sizeof (float)))); __attribute__((noipa)) V foo (V x, V y) { V a = x - y; V b = y + x; return __builtin_shuffle (b, a, (VI) { 0, 5, 2, 3 }); } int main () { V a = (V) { 1.0f, 2.0f, 3.0f, 4.0f }; V b = (V) { 8.0f, 9.0f, 10.0f, 11.0f }; V c = foo (a, b); if (c[0] != 9.0f || c[1] != -7.0f || c[2] != 13.0f || c[3] != 15.0f) __builtin_abort (); } #else int main () { } #endif