[Bug tree-optimization/49161] New: [4.5/4.6/4.7 Regression] Fix VRP on switch stmts
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed May 25 14:09:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49161
Summary: [4.5/4.6/4.7 Regression] Fix VRP on switch stmts
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: jakub@gcc.gnu.org
ReportedBy: jakub@gcc.gnu.org
The following testcase is miscompiled at -O2 on x86_64/i686, starting with:
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155937
extern void abort (void);
int c;
__attribute__((noinline, noclone)) void
bar (int x)
{
if (x != c++)
abort ();
}
__attribute__((noinline, noclone)) void
foo (int x)
{
switch (x)
{
case 3: goto l1;
case 4: goto l2;
case 6: goto l3;
default: return;
}
l1:
goto l4;
l2:
goto l4;
l3:
bar (-1);
l4:
bar (0);
if (x != 4)
bar (1);
if (x != 3)
bar (-1);
bar (2);
}
int
main ()
{
foo (3);
if (c != 3)
abort ();
return 0;
}
More information about the Gcc-bugs
mailing list