aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2016-05-06 13:02:42 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2016-05-06 13:02:42 +0000
commit3433ee3503fd172ef5e1eede6dd097b09428bb3f (patch)
tree1b5f279117fd91a933dcac617314c908f27ca42e
parentab4ccf2094a0fa373049a32aad9e3ce3ca80e395 (diff)
downloadgcc-3433ee3503fd172ef5e1eede6dd097b09428bb3f.zip
gcc-3433ee3503fd172ef5e1eede6dd097b09428bb3f.tar.gz
gcc-3433ee3503fd172ef5e1eede6dd097b09428bb3f.tar.bz2
gimple.c (gimple_call_same_target_p): Unique functions are eq.
* gimple.c (gimple_call_same_target_p): Unique functions are eq. * tree-ssa-tail-merge.c (same_succ::equal): Check pointer eq equality first. From-SVN: r235964
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimple.c3
-rw-r--r--gcc/tree-ssa-tail-merge.c3
3 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4f7ad75..eea7c7a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-06 Nathan Sidwell <nathan@codesourcery.com>
+
+ * gimple.c (gimple_call_same_target_p): Unique functions are eq.
+ * tree-ssa-tail-merge.c (same_succ::equal): Check pointer eq
+ equality first.
+
2016-05-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/70948
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 25d965c..1a22e82 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -1355,7 +1355,8 @@ gimple_call_same_target_p (const gimple *c1, const gimple *c2)
if (gimple_call_internal_p (c1))
return (gimple_call_internal_p (c2)
&& gimple_call_internal_fn (c1) == gimple_call_internal_fn (c2)
- && !gimple_call_internal_unique_p (as_a <const gcall *> (c1)));
+ && (!gimple_call_internal_unique_p (as_a <const gcall *> (c1))
+ || c1 == c2));
else
return (gimple_call_fn (c1) == gimple_call_fn (c2)
|| (gimple_call_fndecl (c1)
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c
index e95879f..3df41fd 100644
--- a/gcc/tree-ssa-tail-merge.c
+++ b/gcc/tree-ssa-tail-merge.c
@@ -538,6 +538,9 @@ same_succ::equal (const same_succ *e1, const same_succ *e2)
gimple *s1, *s2;
basic_block bb1, bb2;
+ if (e1 == e2)
+ return 1;
+
if (e1->hashval != e2->hashval)
return 0;