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



Richard Biener <rguenth at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|NEW                         |ASSIGNED

          Component|middle-end                  |rtl-optimization

         AssignedTo|unassigned at gcc dot       |rguenth at gcc dot gnu.org

                   |gnu.org                     |



--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-19 
15:12:56 UTC ---

And it's of course after RTL CSE ...



Which ends up merging two loop headers as we cross-jumped the tails ...



  /* If we merge a loop header into its predecessor, update the loop

     structure.  */

  if (current_loops != NULL)

    {

      if (b->loop_father->header == b)

        {

          remove_bb_from_loops (a);

          add_bb_to_loop  (a, b->loop_father);

          a->loop_father->header = a;

        }

      remove_bb_from_loops (b);

    }



Which looks broken if a is already a loop header.  I have a patch.

Reply via email to