Testcase:
int f(int t)
{
  int i;
  if(t)
    for(i = 0 ;i<100000;i++)
      ;
   else
    return 2;
  return 1;
}

----
in the tree dump:
<bb 0>:
  if (t_3 != 0) goto <L1>; else goto <L6>;

Invalid sum of incoming frequencies 1100, should be 10000
  # i_6 = PHI <0(0)>;
<L1>:;
  i_8 = i_6 + 1;

Invalid sum of incoming frequencies 10542, should be 1642
  # D.1276_2 = PHI <2(0), 1(1)>;
<L6>:;
  return D.1276_2;

--- in final_cleanup:
<bb 0>:
  if (t != 0) goto <L1>; else goto <L14>;

<L14>:;
  D.1276 = 2;
  goto <bb 3> (<L6>);

Invalid sum of incoming frequencies 1100, should be 10000
<L1>:;
  D.1276 = 1;

Invalid sum of incoming frequencies 10542, should be 1642
<L6>:;
  return D.1276;

-- 
           Summary: Frequences are not updated for empty loop removal
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org


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

Reply via email to