diff options
author | Tom de Vries <tom@codesourcery.com> | 2013-11-14 00:10:33 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2013-11-14 00:10:33 +0000 |
commit | b6366520fa4bdf20c884457f027b5c4701cd3bbe (patch) | |
tree | 7e1b0ffad545bf8df57cda6af6edd135275bf156 /gcc | |
parent | d5ae1c255dcb4c19c7e3cbe77c0f62f9c998b109 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-tail-merge.c | 28 |
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); |