1/* The bit-field below would have a problem if __INT_MAX__ is too 2 small. */ 3#if __INT_MAX__ < 2147483647 4int 5main (void) 6{ 7 exit (0); 8} 9#else 10typedef struct { 11 unsigned b0:1, f1:17, b18:1, b19:1, b20:1, f2:11; 12} bf; 13 14typedef union { 15 bf b; 16 unsigned w; 17} bu; 18 19bu 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 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