* tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Jan 2007 01:20:08 +0000 (01:20 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Jan 2007 01:20:08 +0000 (01:20 +0000)
whose definitions are deleted due to basic block merging.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120423 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-cfg.c

index f9c53fc..b59cc9a 100644 (file)
@@ -1,3 +1,8 @@
+2007-01-03  Robert Kennedy <jimbob@google.com>
+
+       * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
+       whose definitions are deleted due to basic block merging.
+
 2007-01-03  Paul Brook  <paul@codesourcery.com>
 
        PR target/16634
index d956d2b..4358c7e 100644 (file)
@@ -1,5 +1,5 @@
 /* Control flow functions for trees.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
    Free Software Foundation, Inc.
    Contributed by Diego Novillo <dnovillo@redhat.com>
 
@@ -1329,11 +1329,13 @@ tree_merge_blocks (basic_block a, basic_block b)
          copy = build2_gimple (GIMPLE_MODIFY_STMT, def, use);
          bsi_insert_after (&bsi, copy, BSI_NEW_STMT);
          SSA_NAME_DEF_STMT (def) = copy;
+          remove_phi_node (phi, NULL, false);
        }
       else
-       replace_uses_by (def, use);
-
-      remove_phi_node (phi, NULL, false);
+        {
+          replace_uses_by (def, use);
+          remove_phi_node (phi, NULL, true);
+        }
     }
 
   /* Ensure that B follows A.  */