[Bug rtl-optimization/55740] [4.8 Regression] ICE in verify_loop_structure, at cfgloop.c:1582, error: loop 2's header does not belong directly to it

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Dec 19 15:13:00 GMT 2012


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.



More information about the Gcc-bugs mailing list