------- Comment #3 from rguenth at gcc dot gnu dot org 2009-01-27 11:07 ------- Smaller testcase:
unsigned foo (int _si1, unsigned _si2) { return _si1 > 0 && _si1 > 2147483647 - _si2; } unsigned bar (unsigned _left, int _right) { return (unsigned) _right >= 8 ? 1 : _left >> _right; } unsigned g_2; unsigned g_67; unsigned g_111; volatile unsigned g_162; int func_62 (unsigned p_63) { p_63 = g_2 & g_67; if (g_2) ; else if (p_63) return 1; g_67 = bar (p_63, g_2); return 0; } void func_1 (void) { if (g_2) for (; g_2 <= -16; g_2 = foo (g_2, 1)) { for (; g_162; g_162) func_62 (func_62 (0)); if (g_111) return; } } void crc32 (int); void baz (void) { func_1 (); crc32 (g_2); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38926