From 47ca20b4f69986143d552e72e00a706f887ffa00 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Mon, 6 Aug 2018 14:13:20 -0600 Subject: [PATCH] tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Pass down the vr_values instance to cprop_into_stmt. * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Pass down the vr_values instance to cprop_into_stmt. (cprop_into_stmt): Pass vr_values instance down to cprop_operand. (cprop_operand): Also query EVRP to determine if OP is a constant. From-SVN: r263342 --- gcc/ChangeLog | 7 +++++++ gcc/tree-ssa-dom.c | 11 +++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 81a111652d9..4cfae1ac151 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-08-06 Jeff Law + + * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Pass down + the vr_values instance to cprop_into_stmt. + (cprop_into_stmt): Pass vr_values instance down to cprop_operand. + (cprop_operand): Also query EVRP to determine if OP is a constant. + 2018-08-06 Nathan Sidwell * diagnostic.c (diagnostic_report_current_module): Reroll diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index a6f176c5def..267880f3b5c 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -1700,7 +1700,7 @@ record_equivalences_from_stmt (gimple *stmt, int may_optimize_p, CONST_AND_COPIES. */ static void -cprop_operand (gimple *stmt, use_operand_p op_p) +cprop_operand (gimple *stmt, use_operand_p op_p, vr_values *vr_values) { tree val; tree op = USE_FROM_PTR (op_p); @@ -1709,6 +1709,9 @@ cprop_operand (gimple *stmt, use_operand_p op_p) copy of some other variable, use the value or copy stored in CONST_AND_COPIES. */ val = SSA_NAME_VALUE (op); + if (!val) + val = vr_values->op_with_constant_singleton_value_range (op); + if (val && val != op) { /* Do not replace hard register operands in asm statements. */ @@ -1765,7 +1768,7 @@ cprop_operand (gimple *stmt, use_operand_p op_p) vdef_ops of STMT. */ static void -cprop_into_stmt (gimple *stmt) +cprop_into_stmt (gimple *stmt, vr_values *vr_values) { use_operand_p op_p; ssa_op_iter iter; @@ -1782,7 +1785,7 @@ cprop_into_stmt (gimple *stmt) operands. */ if (old_op != last_copy_propagated_op) { - cprop_operand (stmt, op_p); + cprop_operand (stmt, op_p, vr_values); tree new_op = USE_FROM_PTR (op_p); if (new_op != old_op && TREE_CODE (new_op) == SSA_NAME) @@ -1925,7 +1928,7 @@ dom_opt_dom_walker::optimize_stmt (basic_block bb, gimple_stmt_iterator si) opt_stats.num_stmts++; /* Const/copy propagate into USES, VUSES and the RHS of VDEFs. */ - cprop_into_stmt (stmt); + cprop_into_stmt (stmt, evrp_range_analyzer.get_vr_values ()); /* If the statement has been modified with constant replacements, fold its RHS before checking for redundant computations. */ -- 2.30.2