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: unassig...@gcc.gnu.org
        ReportedBy: pins...@gcc.gnu.org


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.

Reply via email to