http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51069
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-12-05 12:46:05 UTC --- CCing Honza, not familiar enough with remove_path/unroll. #0 unloop (loop=0x7ffff133d880, irred_invalidated=0x7fffffffdeef "") at ../../gcc/cfgloopmanip.c:797 #1 0x0000000000675e53 in remove_path (e=0x7ffff146c900) at ../../gcc/cfgloopmanip.c:319 #2 0x00000000009ae07f in peel_loop_completely (loop=0x7ffff133d880) at ../../gcc/loop-unroll.c:514 #3 0x00000000009ad89f in peel_loops_completely (flags=2) at ../../gcc/loop-unroll.c:256 #4 0x00000000009ad640 in unroll_and_peel_loops (flags=2) at ../../gcc/loop-unroll.c:165 #5 0x00000000009a07e4 in rtl_unroll_and_peel_loops () at ../../gcc/loop-init.c:329 is called with loop_2 (header = 6, latch = 21, niter = ) { bb_6 (preds = {bb_21 bb_45 }, succs = {bb_9 bb_7 }) bb_9 (preds = {bb_6 }, succs = {bb_10 bb_11 }) bb_11 (preds = {bb_9 }, succs = {bb_21 bb_12 }) bb_21 (preds = {bb_11 }, succs = {bb_6 }) } where bb_4, bb_12, bb_13 and bb_14 are BB_IRREDUCIBLE_LOOP, before this unroll call verify_loop_structure passes, after it already fails. Of course calling mark_irreducible_loops () after peel_loops_completely () fixes this up and let the testcase pass, but remove_path/unroll should figure it out if it invalidates this property.