111
|
1 /* { dg-do run } */
|
|
2 /* { dg-options "-O1" } */
|
|
3
|
|
4 #include <stdlib.h>
|
|
5
|
|
6 typedef union
|
|
7 {
|
|
8 struct
|
|
9 {
|
|
10 unsigned char a;
|
|
11 unsigned char b;
|
|
12 unsigned char c;
|
|
13 unsigned char d;
|
|
14 } parts;
|
|
15 unsigned long whole;
|
|
16 } T;
|
|
17
|
|
18 T *g_t;
|
|
19
|
|
20 void bar (unsigned long x)
|
|
21 {
|
|
22 if (x != 0)
|
|
23 abort ();
|
|
24 }
|
|
25
|
|
26 int main ()
|
|
27 {
|
|
28 T one;
|
|
29 T two;
|
|
30 T tmp1, tmp2;
|
|
31
|
|
32 one.whole = 0xFFE0E0E0UL;
|
|
33 two.whole = 0xFF000000UL;
|
|
34 tmp1.parts = two.parts;
|
|
35 tmp2.parts = one.parts;
|
|
36 tmp2.parts.c = tmp1.parts.c;
|
|
37 one.parts = tmp2.parts;
|
|
38
|
|
39 g_t = &one;
|
|
40 bar (0);
|
|
41 return 0;
|
|
42 }
|