aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2013-11-14 00:10:33 +0000
committerTom de Vries <vries@gcc.gnu.org>2013-11-14 00:10:33 +0000
commitb6366520fa4bdf20c884457f027b5c4701cd3bbe (patch)
tree7e1b0ffad545bf8df57cda6af6edd135275bf156 /gcc
parentd5ae1c255dcb4c19c7e3cbe77c0f62f9c998b109 (diff)
downloadgcc-b6366520fa4bdf20c884457f027b5c4701cd3bbe.zip
gcc-b6366520fa4bdf20c884457f027b5c4701cd3bbe.tar.gz
gcc-b6366520fa4bdf20c884457f027b5c4701cd3bbe.tar.bz2
Factor out gimple_operand_equal_value_p from gimple_equal_p
2013-11-14 Tom de Vries <tom@codesourcery.com> * tree-ssa-tail-merge.c (gimple_operand_equal_value_p): Factor new function out of ... (gimple_equal_p): ... here. From-SVN: r204766
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-tail-merge.c28
2 files changed, 27 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1afd8c0..66d9c7b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2013-11-14 Tom de Vries <tom@codesourcery.com>
+ * tree-ssa-tail-merge.c (gimple_operand_equal_value_p): Factor new
+ function out of ...
+ (gimple_equal_p): ... here.
+
+2013-11-14 Tom de Vries <tom@codesourcery.com>
+
* trans-mem.c (is_tm_ending): New function.
* gimple.h (is_tm_ending): Declare.
* tree-ssa-tail-merge.c (gimple_equal_p): Remove test on
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c
index 0967085..ca69b23 100644
--- a/gcc/tree-ssa-tail-merge.c
+++ b/gcc/tree-ssa-tail-merge.c
@@ -1076,6 +1076,24 @@ set_cluster (basic_block bb1, basic_block bb2)
gcc_unreachable ();
}
+/* Return true if gimple operands T1 and T2 have the same value. */
+
+static bool
+gimple_operand_equal_value_p (tree t1, tree t2)
+{
+ if (t1 == t2)
+ return true;
+
+ if (t1 == NULL_TREE
+ || t2 == NULL_TREE)
+ return false;
+
+ if (operand_equal_p (t1, t2, 0))
+ return true;
+
+ return gvn_uses_equal (t1, t2);
+}
+
/* Return true if gimple statements S1 and S2 are equal. Gimple_bb (s1) and
gimple_bb (s2) are members of SAME_SUCC. */
@@ -1104,9 +1122,7 @@ gimple_equal_p (same_succ same_succ, gimple s1, gimple s2)
{
t1 = gimple_call_arg (s1, i);
t2 = gimple_call_arg (s2, i);
- if (operand_equal_p (t1, t2, 0))
- continue;
- if (gvn_uses_equal (t1, t2))
+ if (gimple_operand_equal_value_p (t1, t2))
continue;
return false;
}
@@ -1136,14 +1152,12 @@ gimple_equal_p (same_succ same_succ, gimple s1, gimple s2)
case GIMPLE_COND:
t1 = gimple_cond_lhs (s1);
t2 = gimple_cond_lhs (s2);
- if (!operand_equal_p (t1, t2, 0)
- && !gvn_uses_equal (t1, t2))
+ if (!gimple_operand_equal_value_p (t1, t2))
return false;
t1 = gimple_cond_rhs (s1);
t2 = gimple_cond_rhs (s2);
- if (!operand_equal_p (t1, t2, 0)
- && !gvn_uses_equal (t1, t2))
+ if (!gimple_operand_equal_value_p (t1, t2))
return false;
code1 = gimple_expr_code (s1);