aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-03-23 16:17:20 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2015-03-23 16:17:20 +0100
commitf45be077ec1a40e5b3046cd19bd32e8e1ebaca73 (patch)
tree5a975d97b8f4c086f6425cf82d52fc644d9a3390 /gcc
parentd5f035ea524e527bda3db2b9eec46a2c1d3fc404 (diff)
downloadgcc-f45be077ec1a40e5b3046cd19bd32e8e1ebaca73.zip
gcc-f45be077ec1a40e5b3046cd19bd32e8e1ebaca73.tar.gz
gcc-f45be077ec1a40e5b3046cd19bd32e8e1ebaca73.tar.bz2
re PR ipa/65521 (nondeterministic -fcompare-debug failures)
PR ipa/65521 * ipa-icf.c (sem_item::update_hash_by_addr_refs): Hash ultimate_alias_target ()->order ints instead of ultimate_alias_target () pointers. * gcc.dg/pr65521.c: New test. From-SVN: r221596
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ipa-icf.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr65521.c39
4 files changed, 53 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 724d13f..d660363 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR ipa/65521
+ * ipa-icf.c (sem_item::update_hash_by_addr_refs): Hash
+ ultimate_alias_target ()->order ints instead of
+ ultimate_alias_target () pointers.
+
2015-03-23 Richard Biener <rguenther@suse.de>
PR tree-optimization/65518
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index bdfbd3b..48a7d3d 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -575,7 +575,7 @@ sem_item::update_hash_by_addr_refs (hash_map <symtab_node *,
{
ref = node->iterate_reference (i, ref);
if (ref->address_matters_p () || !m_symtab_node_map.get (ref->referred))
- hstate.add_ptr (ref->referred->ultimate_alias_target ());
+ hstate.add_int (ref->referred->ultimate_alias_target ()->order);
}
if (is_a <cgraph_node *> (node))
@@ -585,7 +585,7 @@ sem_item::update_hash_by_addr_refs (hash_map <symtab_node *,
{
sem_item **result = m_symtab_node_map.get (e->callee);
if (!result)
- hstate.add_ptr (e->callee->ultimate_alias_target ());
+ hstate.add_int (e->callee->ultimate_alias_target ()->order);
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e6e63d1..d3958f6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR ipa/65521
+ * gcc.dg/pr65521.c: New test.
+
2015-03-23 Richard Biener <rguenther@suse.de>
PR tree-optimization/65518
diff --git a/gcc/testsuite/gcc.dg/pr65521.c b/gcc/testsuite/gcc.dg/pr65521.c
new file mode 100644
index 0000000..97879e2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr65521.c
@@ -0,0 +1,39 @@
+/* PR ipa/65521 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcompare-debug" } */
+
+struct S { int s; };
+int f6 (void *, unsigned long);
+int f7 (int, int *, unsigned long);
+int f8 (void);
+int f9 (void (*) (void));
+
+int
+f1 (void *p)
+{
+ return f6 (p, 256UL);
+}
+
+int
+f2 (void *p)
+{
+ return f6 (p, 256UL);
+}
+
+int
+f3 (struct S *x)
+{
+ return f7 (f8 (), &x->s, 16UL);
+}
+
+int
+f4 (struct S *x)
+{
+ return f7 (f8 (), &x->s, 16UL);
+}
+
+void
+f5 (void)
+{
+ f9 (f5);
+}