/* { dg-do run } */ /* { dg-options "-O2 -Wno-psabi" } */ typedef unsigned char u8; typedef unsigned char __attribute__((__vector_size__ (8))) v64u8; typedef unsigned char __attribute__((__vector_size__ (64))) v512u8; typedef unsigned long long u64; u64 gx; v512u8 gu; v512u8 gv; v64u8 __attribute__((__noipa__)) foo0 (u8 ax, v512u8 au, u64 ay) { u8 lx = ax && (u8) ay; v512u8 lc = 7 <= au; v512u8 ld = (u8) (ay && gx) == gu; v512u8 le = (v512u8) ld + (v512u8) gv; v512u8 lf = le + lc; return (((union { v512u8 a; v64u8 b[8]; }) lf).b[3]) + lx; } int main (void) { v64u8 x = foo0 (2, (v512u8) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15 }, 2); for (unsigned i = 0; i < sizeof (x); i++) if (x[i] != (i ? 0 : 0xff)) __builtin_abort (); return 0; }