]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Factor out gimple_operand_equal_value_p from gimple_equal_p
authorTom de Vries <tom@codesourcery.com>
Thu, 14 Nov 2013 00:10:33 +0000 (00:10 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Thu, 14 Nov 2013 00:10:33 +0000 (00:10 +0000)
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

gcc/ChangeLog
gcc/tree-ssa-tail-merge.c

index 1afd8c03b61de72300f543f89cc06d020f333dc7..66d9c7b2e5eb0c810ecb9be4ec1114f64fe76770 100644 (file)
@@ -1,3 +1,9 @@
+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.
index 09670857a59602dda3916374ddd365f772e7441f..ca69b23e4bb09acc6bfba7de37817edb6a333a56 100644 (file)
@@ -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);