re PR tree-optimization/23817 (ICE in check_loop_closed_ssa_use, at tree-ssa-loop...
authorZdenek Dvorak <dvorakz@suse.cz>
Tue, 13 Sep 2005 07:33:49 +0000 (09:33 +0200)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Tue, 13 Sep 2005 07:33:49 +0000 (07:33 +0000)
PR tree-optimize/23817
* tree-cfg.c (tree_merge_blocks): Preserve loop closed ssa.

From-SVN: r104218

gcc/ChangeLog
gcc/tree-cfg.c

index 0b7c8bd..e1900f9 100644 (file)
@@ -1,3 +1,8 @@
+2005-09-13  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR tree-optimize/23817
+       * tree-cfg.c (tree_merge_blocks): Preserve loop closed ssa.
+
 2005-09-13  Alan Modra  <amodra@bigpond.net.au>
 
        PR target/23774
index 75c14f4..d5d466e 100644 (file)
@@ -1314,8 +1314,17 @@ tree_merge_blocks (basic_block a, basic_block b)
     {
       tree def = PHI_RESULT (phi), use = PHI_ARG_DEF (phi, 0);
       tree copy;
-      
-      if (!may_propagate_copy (def, use))
+      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.  */
+      if (current_loops
+         && is_gimple_reg (def)
+         && TREE_CODE (use) == SSA_NAME
+         && a->loop_father != b->loop_father)
+       may_replace_uses = false;
+
+      if (!may_replace_uses)
        {
          gcc_assert (is_gimple_reg (def));