diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-ssa-dse.c | 31 |
2 files changed, 13 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7c1870..bbf5651 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index 8c96004..a4e507c 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 <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; } |