aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dse.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-ssa-dse.cc')
-rw-r--r--gcc/tree-ssa-dse.cc17
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/tree-ssa-dse.cc b/gcc/tree-ssa-dse.cc
index c14e5e4..82976bd 100644
--- a/gcc/tree-ssa-dse.cc
+++ b/gcc/tree-ssa-dse.cc
@@ -978,14 +978,6 @@ dse_classify_store (ao_ref *ref, gimple *stmt,
if (gimple_code (temp) == GIMPLE_PHI)
{
- /* If we visit this PHI by following a backedge then we have to
- make sure ref->ref only refers to SSA names that are invariant
- with respect to the loop represented by this PHI node. */
- if (dominated_by_p (CDI_DOMINATORS, gimple_bb (stmt),
- gimple_bb (temp))
- && !for_each_index (ref->ref ? &ref->ref : &ref->base,
- check_name, gimple_bb (temp)))
- return DSE_STORE_LIVE;
defvar = PHI_RESULT (temp);
bitmap_set_bit (visited, SSA_NAME_VERSION (defvar));
}
@@ -1019,6 +1011,15 @@ dse_classify_store (ao_ref *ref, gimple *stmt,
if (!bitmap_bit_p (visited,
SSA_NAME_VERSION (PHI_RESULT (use_stmt))))
{
+ /* If we visit this PHI by following a backedge then we have
+ to make sure ref->ref only refers to SSA names that are
+ invariant with respect to the loop represented by this
+ PHI node. */
+ if (dominated_by_p (CDI_DOMINATORS, gimple_bb (stmt),
+ gimple_bb (use_stmt))
+ && !for_each_index (ref->ref ? &ref->ref : &ref->base,
+ check_name, gimple_bb (use_stmt)))
+ return DSE_STORE_LIVE;
defs.safe_push (use_stmt);
if (!first_phi_def)
first_phi_def = as_a <gphi *> (use_stmt);