Right now phiopt has the same code as mark_lhs_in_seq_for_dce
inlined into match_simplify_replacement. Instead let's use the
function in gimple-fold that does the same thing.

Bootstrapped and tested on x86_64-linux-gnu.

gcc/ChangeLog:

        * gimple-fold.cc (mark_lhs_in_seq_for_dce): Make
        non-static.
        * gimple-fold.h (mark_lhs_in_seq_for_dce): Declare.
        * tree-ssa-phiopt.cc (match_simplify_replacement): Use
        mark_lhs_in_seq_for_dce instead of manually looping.

Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
---
 gcc/gimple-fold.cc     |  2 +-
 gcc/gimple-fold.h      |  1 +
 gcc/tree-ssa-phiopt.cc | 13 +++----------
 3 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
index b74fb8bb50c..0f437616d77 100644
--- a/gcc/gimple-fold.cc
+++ b/gcc/gimple-fold.cc
@@ -6020,7 +6020,7 @@ has_use_on_stmt (tree name, gimple *stmt)
 
 /* Add the lhs of each statement of SEQ to DCE_WORKLIST. */
 
-static void
+void
 mark_lhs_in_seq_for_dce (bitmap dce_worklist, gimple_seq seq)
 {
   if (!dce_worklist)
diff --git a/gcc/gimple-fold.h b/gcc/gimple-fold.h
index afecbb8ceef..8b1e246b0c0 100644
--- a/gcc/gimple-fold.h
+++ b/gcc/gimple-fold.h
@@ -264,6 +264,7 @@ gimple_build_round_up (gimple_seq *seq, tree type, tree 
old_size,
 
 extern bool gimple_stmt_nonnegative_warnv_p (gimple *, bool *, int = 0);
 extern bool gimple_stmt_integer_valued_real_p (gimple *, int = 0);
+extern void mark_lhs_in_seq_for_dce (bitmap, gimple_seq);
 
 /* In gimple-match.cc.  */
 extern tree gimple_simplify (enum tree_code, tree, tree,
diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
index 9724040fc3d..8c5908e5bff 100644
--- a/gcc/tree-ssa-phiopt.cc
+++ b/gcc/tree-ssa-phiopt.cc
@@ -1001,16 +1001,9 @@ match_simplify_replacement (basic_block cond_bb, 
basic_block middle_bb,
   if (seq)
     {
       // Mark the lhs of the new statements maybe for dce
-      gimple_stmt_iterator gsi1 = gsi_start (seq);
-      for (; !gsi_end_p (gsi1); gsi_next (&gsi1))
-       {
-         gimple *stmt = gsi_stmt (gsi1);
-         tree name = gimple_get_lhs (stmt);
-         if (name && TREE_CODE (name) == SSA_NAME)
-           bitmap_set_bit (exprs_maybe_dce, SSA_NAME_VERSION (name));
-       }
-    gsi_insert_seq_before (&gsi, seq, GSI_CONTINUE_LINKING);
-  }
+      mark_lhs_in_seq_for_dce (exprs_maybe_dce, seq);
+      gsi_insert_seq_before (&gsi, seq, GSI_CONTINUE_LINKING);
+    }
 
   /* If there was a statement to move, move it to right before
      the original conditional.  */
-- 
2.43.0

Reply via email to