/* PR target/101384 */ /* { dg-do run } */ /* { dg-options "-O2 -Wno-psabi -w" } */ typedef unsigned char __attribute__((__vector_size__ (16))) U; typedef unsigned short __attribute__((__vector_size__ (8 * sizeof (short)))) V; U u; V v; __attribute__((noipa)) 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; } __attribute__((noipa)) V bar (void) { V y = (V) { 0x8000, 0xffff, 0x8000, 0xffff, 0x8000, 0xffff, 0x8000, 0xffff } + v; return y; } int main () { U x = foo (); for (unsigned i = 0; i < 16; i++) if (x[i] != ((i & 3) ? 0xff : 0x80)) __builtin_abort (); V y = bar (); for (unsigned i = 0; i < 8; i++) if (y[i] != ((i & 1) ? 0xffff : 0x8000)) __builtin_abort (); return 0; }