annotate gcc/testsuite/gcc.dg/tree-ssa/pr80803.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-options "-O" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 struct S0
kono
parents:
diff changeset
5 {
kono
parents:
diff changeset
6 unsigned a : 15;
kono
parents:
diff changeset
7 int b;
kono
parents:
diff changeset
8 int c;
kono
parents:
diff changeset
9 };
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 struct S1
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 struct S0 s0;
kono
parents:
diff changeset
14 int e;
kono
parents:
diff changeset
15 };
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 struct Z
kono
parents:
diff changeset
18 {
kono
parents:
diff changeset
19 char c;
kono
parents:
diff changeset
20 int z;
kono
parents:
diff changeset
21 } __attribute__((packed));
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 union U
kono
parents:
diff changeset
24 {
kono
parents:
diff changeset
25 struct S1 s1;
kono
parents:
diff changeset
26 struct Z z;
kono
parents:
diff changeset
27 };
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 int __attribute__((noinline, noclone))
kono
parents:
diff changeset
31 return_zero (void)
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 return 0;
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 volatile union U gu;
kono
parents:
diff changeset
37 struct S0 gs;
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 int __attribute__((noinline, noclone))
kono
parents:
diff changeset
40 check_outcome ()
kono
parents:
diff changeset
41 {
kono
parents:
diff changeset
42 if (gs.a != 6
kono
parents:
diff changeset
43 || gs.b != 80000)
kono
parents:
diff changeset
44 __builtin_abort ();
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 int
kono
parents:
diff changeset
48 main (int argc, char *argv[])
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 union U u;
kono
parents:
diff changeset
51 struct S1 m,n;
kono
parents:
diff changeset
52 struct S0 l;
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 if (return_zero ())
kono
parents:
diff changeset
55 u.z.z = 20000;
kono
parents:
diff changeset
56 else
kono
parents:
diff changeset
57 {
kono
parents:
diff changeset
58 u.s1.s0.a = 6;
kono
parents:
diff changeset
59 u.s1.s0.b = 80000;
kono
parents:
diff changeset
60 u.s1.e = 2;
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 n = u.s1;
kono
parents:
diff changeset
63 m = n;
kono
parents:
diff changeset
64 m.s0.c = 0;
kono
parents:
diff changeset
65 l = m.s0;
kono
parents:
diff changeset
66 gs = l;
kono
parents:
diff changeset
67 }
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 gu = u;
kono
parents:
diff changeset
70 check_outcome ();
kono
parents:
diff changeset
71 return 0;
kono
parents:
diff changeset
72 }