foo1(void)1 int foo1(void)
2 {
3   union {
4     char a[sizeof (unsigned)];
5     unsigned b;
6   } u;
7 
8   u.b = 0x01;
9   return u.a[0];
10 }
11 
foo2(void)12 int foo2(void)
13 {
14   volatile union {
15     char a[sizeof (unsigned)];
16     unsigned b;
17   } u;
18 
19   u.b = 0x01;
20   return u.a[0];
21 }
22 
main(void)23 int main(void)
24 {
25   if (foo1() != foo2())
26     abort ();
27   exit (0);
28 }
29