Fix gcc.dg/pr63594-1.c execution on Solaris/x86
[official-gcc.git] / gcc / testsuite / gcc.dg / pr63594-2.c
blob23c11b1a686067e1a776c9c6052f0645969d89bf
1 /* PR target/63594 */
2 /* { dg-do run } */
3 /* { dg-options "-O2 -Wno-psabi" } */
4 /* { dg-additional-options "-mno-mmx" { target i?86-*-* x86_64-*-* } } */
6 #define C1 c
7 #define C2 C1, C1
8 #define C4 C2, C2
9 #define C8 C4, C4
10 #define C16 C8, C8
11 #define C32 C16, C16
12 #define C64 C32, C32
13 #define C_(n) n
14 #define C(n) C_(C##n)
16 #define T(t,s) \
17 typedef t v##t##s __attribute__ ((__vector_size__ (s * sizeof (t)))); \
18 __attribute__((noinline, noclone)) v##t##s \
19 test1##t##s (t c) \
20 { \
21 v##t##s v = { C(s) }; \
22 return v; \
23 } \
25 __attribute__((noinline, noclone)) v##t##s \
26 test2##t##s (t *p) \
27 { \
28 t c = *p; \
29 v##t##s v = { C(s) }; \
30 return v; \
31 } \
33 void \
34 test3##t##s (void) \
35 { \
36 t c = 17; \
37 int i; \
38 v##t##s a = test1##t##s (c); \
39 for (i = 0; i < s; i++) \
40 if (a[i] != 17) \
41 __builtin_abort (); \
42 v##t##s b = test2##t##s (&c); \
43 for (i = 0; i < s; i++) \
44 if (a[i] != 17) \
45 __builtin_abort (); \
48 typedef long long llong;
50 #define TESTS \
51 T(char, 64) \
52 T(char, 32) \
53 T(char, 16) \
54 T(char, 8) \
55 T(char, 4) \
56 T(char, 2) \
57 T(char, 1) \
58 T(short, 32) \
59 T(short, 16) \
60 T(short, 8) \
61 T(short, 4) \
62 T(short, 2) \
63 T(short, 1) \
64 T(int, 16) \
65 T(int, 8) \
66 T(int, 4) \
67 T(int, 2) \
68 T(int, 1) \
69 T(float, 16) \
70 T(float, 8) \
71 T(float, 4) \
72 T(float, 2) \
73 T(float, 1) \
74 T(llong, 8) \
75 T(llong, 4) \
76 T(llong, 2) \
77 T(llong, 1) \
78 T(double, 8) \
79 T(double, 4) \
80 T(double, 2) \
81 T(double, 1)
83 TESTS
85 int
86 main ()
88 #undef T
89 #define T(t,s) test3##t##s ();
90 TESTS
91 return 0;