From: Richard Guenther Date: Thu, 21 Apr 2011 15:51:39 +0000 (+0000) Subject: re PR middle-end/48712 (ICE in dfs_enumerate_from, at cfganal.c:1207, with -O3) X-Git-Tag: releases/gcc-4.5.3~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03da8da41677025d68942d0d8482c0e49563c2dd;p=thirdparty%2Fgcc.git re PR middle-end/48712 (ICE in dfs_enumerate_from, at cfganal.c:1207, with -O3) 2011-04-21 Richard Guenther PR middle-end/48712 Backport from 4.6 branch 2011-03-07 Zdenek Dvorak PR bootstrap/48000 * cfgloopmanip.c (fix_bb_placements): Return immediately if FROM is BASE_LOOP's header. From-SVN: r172833 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d07bf66f1769..f08775816f4f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-04-21 Richard Guenther + + PR middle-end/48712 + Backport from 4.6 branch + 2011-03-07 Zdenek Dvorak + + PR bootstrap/48000 + * cfgloopmanip.c (fix_bb_placements): Return immediately + if FROM is BASE_LOOP's header. + 2011-04-20 Richard Guenther Backport from 4.6 branch diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index 8f4e7375488c..1dac71529fa4 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -185,7 +185,11 @@ fix_bb_placements (basic_block from, fix_loop_placement. */ base_loop = from->loop_father; - if (base_loop == current_loops->tree_root) + /* If we are already in the outermost loop, the basic blocks cannot be moved + outside of it. If FROM is the header of the base loop, it cannot be moved + outside of it, either. In both cases, we can end now. */ + if (base_loop == current_loops->tree_root + || from == base_loop->header) return; in_queue = sbitmap_alloc (last_basic_block);