1typedef union 2{ 3 struct {int a; int b;} s; 4 double d; 5} T; 6 7int h (T *); 8T g (T); 9 10#if COMPILER != 1 11h (T *x) 12{ 13 if (x->s.a != 0 || x->s.b != 1) 14 abort (); 15} 16#endif 17 18#if COMPILER != 2 19T 20g (T x) 21{ 22 if (x.s.a != 13 || x.s.b != 47) 23 abort (); 24 x.s.a = 0; 25 x.s.b = 1; 26 h (&x); 27 return x; 28} 29#endif 30 31#if COMPILER != 1 32f () 33{ 34 T x; 35 x.s.a = 13; 36 x.s.b = 47; 37 g (x); 38 if (x.s.a != 13 || x.s.b != 47) 39 abort (); 40 x = g (x); 41 if (x.s.a != 0 || x.s.b != 1) 42 abort (); 43} 44#endif 45 46#if COMPILER != 2 47main () 48{ 49 f (); 50 exit (0); 51} 52#endif 53