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