------- Comment #9 from rguenth at gcc dot gnu dot org 2007-03-10 22:08 ------- Actually the testcase from comment #7 should abort() and I got the numbers wrong. The following is more usual at that it aborts if the code is wrong:
extern void exit(int); extern void abort(); void foo (int e1) { if (e1 < 0) { e1 = -e1; if (e1 >>= 4) { if (e1 >= 1 << 5) exit(0); } } } int main() { foo(-(1<<9)); abort(); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31115