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