annotate gcc/testsuite/gcc.dg/torture/pr94482.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* { dg-do run } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 /* { dg-additional-options "-Wno-psabi -w" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 /* { dg-additional-options "-msse2" { target sse2_runtime } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 typedef unsigned V __attribute__ ((__vector_size__ (16)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 union U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 V j;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 unsigned long long i __attribute__ ((__vector_size__ (16)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 static inline __attribute__((always_inline)) V
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 foo (unsigned long long a)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 union U z = { .j = (V) {} };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 for (unsigned long i = 0; i < 1; i++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 z.i[i] = a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 return z.j;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 static inline __attribute__((always_inline)) V
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 bar (V a, unsigned long long i, int q)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 union U z = { .j = a };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 z.i[q] = i;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 return z.j;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 int
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 main ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 union U z = { .j = bar (foo (1729), 2, 1) };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 if (z.i[0] != 1729)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 __builtin_abort ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 return 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 }