OSDN Git Service

2008-05-14 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 May 2008 15:30:14 +0000 (15:30 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 May 2008 15:30:14 +0000 (15:30 +0000)
* tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
Make sure to register the store if the use is a PHI_NODE.

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

gcc/ChangeLog
gcc/tree-ssa-dse.c

index b7c1870..bbf5651 100644 (file)
@@ -1,3 +1,8 @@
+2008-05-14  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
+       Make sure to register the store if the use is a PHI_NODE.
+
 2008-05-14  Olivier Hainque  <hainque@adacore.com>
 
        * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
index 8c96004..a4e507c 100644 (file)
@@ -313,6 +313,14 @@ dse_possible_dead_store_p (tree stmt,
       gcc_assert (*use_p != NULL_USE_OPERAND_P);
       *first_use_p = *use_p;
 
+      /* ???  If we hit a PHI_NODE we could skip to the PHI_RESULT uses.
+        Don't bother to do that for now.  */
+      if (TREE_CODE (temp) == PHI_NODE)
+       {
+         fail = true;
+         break;
+       }
+
       /* In the case of memory partitions, we may get:
 
           # MPT.764_162 = VDEF <MPT.764_161(D)>
@@ -360,29 +368,6 @@ dse_possible_dead_store_p (tree stmt,
       return false;
     }
 
-  /* Skip through any PHI nodes we have already seen if the PHI
-     represents the only use of this store.
-
-     Note this does not handle the case where the store has
-     multiple VDEFs which all reach a set of PHI nodes in the same block.  */
-  while (*use_p != NULL_USE_OPERAND_P
-        && TREE_CODE (*use_stmt) == PHI_NODE
-        && bitmap_bit_p (dse_gd->stores, get_stmt_uid (*use_stmt)))
-    {
-      /* A PHI node can both define and use the same SSA_NAME if
-        the PHI is at the top of a loop and the PHI_RESULT is
-        a loop invariant and copies have not been fully propagated.
-
-        The safe thing to do is exit assuming no optimization is
-        possible.  */
-      if (SSA_NAME_DEF_STMT (PHI_RESULT (*use_stmt)) == *use_stmt)
-       return false;
-
-      /* Skip past this PHI and loop again in case we had a PHI
-        chain.  */
-      single_imm_use (PHI_RESULT (*use_stmt), use_p, use_stmt);
-    }
-
   return true;
 }