http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52005
Bug #: 52005
Summary: tree-ssa-combineif does not work with some cfgs
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: [email protected]
ReportedBy: [email protected]
Take:
int f(int x, int a, int b)
{
int t = 0;
int c = 1 << a;
if (!(x & 1))
t = 0;
else
if (x & (1 << 2))
t = 1;
else
t = 0;
return t;
}
int f1(int x, int a, int b)
{
int t = 0;
int c = 1 << a;
if (x & 1)
if (x & (1 << 2))
t = 1;
return t;
}
--- CUT ---
Both codes are the same. The first case is not optimized while the second is.
The reason is we have code in ifcombine which only looks for the second case.
While the first is not caught.