------- Comment #4 from pinskia at gcc dot gnu dot org 2006-06-17 22:06 ------- Reduced testcase: struct a { unsigned int bits : 1; signed long val : ((sizeof(long) * 8) - 1); }; int Fnegate (struct a b) { if ((-((long)b.val)) <= ((long) ((1UL << (((sizeof(long) * 8) - 1) - 1)) -1UL)) && (-((long)b.val)) >= (-(((long) ((1UL << (((sizeof(long) * 8) - 1) - 1)) -1UL))) - 1)) return 0 ; abort (); } int main () { struct a b = {1, 1}; Fnegate (b); return 0; }
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28045