aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2018-08-06 14:13:20 -0600
committerJeff Law <law@gcc.gnu.org>2018-08-06 14:13:20 -0600
commit47ca20b4f69986143d552e72e00a706f887ffa00 (patch)
treecb674fca757ce9e0eed2cd27572bf68e71e532ed
parent9e525f085b65ffc07217a86935cf357e3154accf (diff)
downloadgcc-47ca20b4f69986143d552e72e00a706f887ffa00.zip
gcc-47ca20b4f69986143d552e72e00a706f887ffa00.tar.gz
gcc-47ca20b4f69986143d552e72e00a706f887ffa00.tar.bz2
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-ssa-dom.c11
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 81a1116..4cfae1a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-08-06 Jeff Law <law@redhat.com>
+
+ * 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 <nathan@acm.org>
* diagnostic.c (diagnostic_report_current_module): Reroll
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index a6f176c..267880f 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. */