Hi!

I've bootstrapped/regtested and profiledbootstrapped/regtested
the following patch from Zdenek on x86_64-linux and i686-linux
and with richi's approval from IRC committed to trunk.

2011-03-07  Zdenek Dvorak  <o...@ucw.cz>

        PR bootstrap/48000
        * cfgloopmanip.c (fix_bb_placements): Return immediately
        if FROM is BASE_LOOP's header.

--- gcc/cfgloopmanip.c  (revision 170739)
+++ gcc/cfgloopmanip.c  (working copy)
@@ -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);

        Jakub

Reply via email to