http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56264
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> 2013-02-11 10:27:56 UTC --- I would guess that originally cfg-cleanup caused basic-blocks to leak outside a loop, thus at most exposing new use sites. With discovering new loops we may both wreck that scheme (loop depth may not change but blocks still leak) and fail to recognize use-blocks of defs that changed loop ownership. Fix_loop_structure could return the number of newly discovered loops, indicating that the whole function needs to be re-scanned (still not accounting for weird loop tree hierarchy changes, but those shouldn't be caused by transformations cfgcleanup does). Testing a patch.