aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgloopmanip.c
diff options
context:
space:
mode:
authorZdenek Dvorak <ook@ucw.cz>2011-03-07 16:41:53 +0000
committerJakub Jelinek <jakub@redhat.com>2011-03-07 16:41:53 +0000
commit1fc973cc0870e3c0d525baf61db06f5e609c11ea (patch)
tree1aca7caecd43c0428ec90152d41f0f42691f7418 /gcc/cfgloopmanip.c
parent7baacd07912829fc90ee3612938d0b49a15fd42c (diff)
PR bootstrap/48000
* cfgloopmanip.c (fix_bb_placements): Return immediately if FROM is BASE_LOOP's header. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@170740 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgloopmanip.c')
-rw-r--r--gcc/cfgloopmanip.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index 3802f9cff12..1824421f616 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);