------- Comment #4 from rguenth at gcc dot gnu dot org 2009-01-27 13:36 ------- static inline int foo (unsigned _si1) { if (_si1 != 0) if (_si1 > 2147483647) return 1; return 0; }
static inline unsigned bar (unsigned _left, int _right) { return (unsigned) _right >= 8 ? 1 : _left >> _right; } unsigned g_2; unsigned g_67; volatile unsigned g_162; static inline 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; } unsigned baz (void) { if (g_2) for (; g_2 <= -16; g_2 = foo (g_2)) { for (; g_162; g_162) func_62 (func_62 (0)); if (g_67) break; } return g_2; } The only difference between -O2 and -O3 is that PPRE is enabled which is what somehow triggers the ICE. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38926