1 /* The bit-field below would have a problem if __INT_MAX__ is too 2 small. */ 3 #if __INT_MAX__ < 2147483647 4 int main(void)5main (void) 6 { 7 exit (0); 8 } 9 #else 10 typedef struct { 11 unsigned b0:1, f1:17, b18:1, b19:1, b20:1, f2:11; 12 } bf; 13 14 typedef union { 15 bf b; 16 unsigned w; 17 } bu; 18 19 bu f(bu i)20f(bu i) 21 { 22 bu o = i; 23 24 if (o.b.b0) 25 o.b.b18 = 1, 26 o.b.b20 = 1; 27 else 28 o.b.b18 = 0, 29 o.b.b20 = 0; 30 31 return o; 32 } 33 main()34main() 35 { 36 bu a; 37 bu r; 38 39 a.w = 0x4000000; 40 a.b.b0 = 0; 41 r = f(a); 42 if (a.w != r.w) 43 abort(); 44 exit(0); 45 } 46 #endif 47