http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51030

             Bug #: 51030
           Summary: PHI opt does not handle value-replacement with a
                    transfer function
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: rgue...@gcc.gnu.org


int f(int i)
{
  if (i)
    return i+2;
  return 2;
}

struct C { int i; };
int *g(struct C *p)
{
  if (p)
    return &p->i;
  return (int *)0;
}

both cases can be optimized to return i + 2 or &p->i, respectively.
Currently it only handles

int f(int i)
{
  if (i != 1)
    return i;
  return 1;
}

Reply via email to