tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only in loop closed...
authorZdenek Dvorak <ook@ucw.cz>
Wed, 1 Aug 2007 11:41:25 +0000 (13:41 +0200)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Wed, 1 Aug 2007 11:41:25 +0000 (11:41 +0000)
* tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
in loop closed ssa.

From-SVN: r127119

gcc/ChangeLog
gcc/tree-cfg.c

index 46efc5ddf3c0da41ad2a07c49996577a7e654b30..6736648ba0946a4fc0ff64b9329903341cc1e0c5 100644 (file)
@@ -1,3 +1,8 @@
+2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
+
+       * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
+       in loop closed ssa.
+
 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
 
        * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
index d0c8fe9b0d2ab517724cf3f2a37ffa83af8dc066..c24b1c69524fbc7c8575f0bf8d42b9ad58bdc086 100644 (file)
@@ -1274,9 +1274,10 @@ tree_merge_blocks (basic_block a, basic_block b)
       tree copy;
       bool may_replace_uses = may_propagate_copy (def, use);
 
-      /* In case we have loops to care about, do not propagate arguments of
-        loop closed ssa phi nodes.  */
+      /* In case we maintain loop closed ssa form, do not propagate arguments
+        of loop exit phi nodes.  */
       if (current_loops
+         && (current_loops->state & LOOP_CLOSED_SSA)
          && is_gimple_reg (def)
          && TREE_CODE (use) == SSA_NAME
          && a->loop_father != b->loop_father)