https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101384
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Simpler testcase with no vector type casts which is also works for both endians: typedef unsigned char __attribute__((__vector_size__ (16))) U; U u; U foo (void) { U y = (U) { 0x80, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff } + u; return y; } int main () { U x = (U) foo (); for (unsigned i = 0; i < 16; i++) if (x[i] != ((i & 3) ? 0xff : 0x80)) __builtin_abort (); return 0; }