tree_forwarder_block_p has

  if (find_edge (ENTRY_BLOCK_PTR, bb))
    return false;

without explanation.  This test was added by you, Jeff - do you remember why?

Removing this check triggers some ICEs in the testsuite because remove_bb
(called from remove_forwarder_block) unconditionally moves labels from the
removed block to prev_bb (yuck!) - which is of course invalid if that happens
to be the entry bb.  Luckily remove_forwarder_block already contains code
to do the label-move job itself - it is just conditional on seen abnormal
incoming edges.  Enabling this code to run by default causes a bootstrap
comparison failure though.


-- 
           Summary: tree_forwarder_block_p says no to first basic block
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org


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

Reply via email to