foo1(void)1int 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)12int 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)23int main(void) 24 { 25 if (foo1() != foo2()) 26 abort (); 27 exit (0); 28 } 29