From 77ad29054f81b6956c9f0982b37f0b6a1d80cd1b Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 14 May 2008 15:30:14 +0000 Subject: [PATCH] 2008-05-14 Richard Guenther * 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 | 5 +++++ gcc/tree-ssa-dse.c | 31 ++++++++----------------------- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7c1870085d..bbf5651a50b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-05-14 Richard Guenther + + * 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 * expr.c (expand_expr_real_1) : Force op0 to diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index 8c960045ce6..a4e507c3224 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -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 @@ -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; } -- 2.11.4.GIT