------- 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