/* PR target/63594 */ /* { dg-do run } */ /* { dg-options "-O2 -Wno-psabi" } */ /* { dg-additional-options "-mno-mmx" { target i?86-*-* x86_64-*-* } } */ /* { dg-prune-output "non-standard ABI extension" } */ #define C1 c #define C2 C1, C1 #define C4 C2, C2 #define C8 C4, C4 #define C16 C8, C8 #define C32 C16, C16 #define C64 C32, C32 #define C_(n) n #define C(n) C_(C##n) #define T(t,s) \ typedef t v##t##s __attribute__ ((__vector_size__ (s * sizeof (t)))); \ __attribute__((noinline, noclone)) v##t##s \ test1##t##s (t c) \ { \ v##t##s v = { C(s) }; \ return v; \ } \ \ __attribute__((noinline, noclone)) v##t##s \ test2##t##s (t *p) \ { \ t c = *p; \ v##t##s v = { C(s) }; \ return v; \ } \ \ void \ test3##t##s (void) \ { \ t c = 17; \ int i; \ v##t##s a = test1##t##s (c); \ for (i = 0; i < s; i++) \ if (a[i] != 17) \ __builtin_abort (); \ v##t##s b = test2##t##s (&c); \ for (i = 0; i < s; i++) \ if (a[i] != 17) \ __builtin_abort (); \ } typedef long long llong; #define TESTS \ T(char, 64) \ T(char, 32) \ T(char, 16) \ T(char, 8) \ T(char, 4) \ T(char, 2) \ T(char, 1) \ T(short, 32) \ T(short, 16) \ T(short, 8) \ T(short, 4) \ T(short, 2) \ T(short, 1) \ T(int, 16) \ T(int, 8) \ T(int, 4) \ T(int, 2) \ T(int, 1) \ T(float, 16) \ T(float, 8) \ T(float, 4) \ T(float, 2) \ T(float, 1) \ T(llong, 8) \ T(llong, 4) \ T(llong, 2) \ T(llong, 1) \ T(double, 8) \ T(double, 4) \ T(double, 2) \ T(double, 1) TESTS int main () { #undef T #define T(t,s) test3##t##s (); TESTS return 0; }