re PR ipa/65521 (nondeterministic -fcompare-debug failures)
authorJakub Jelinek <jakub@redhat.com>
Mon, 23 Mar 2015 15:17:20 +0000 (16:17 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 23 Mar 2015 15:17:20 +0000 (16:17 +0100)
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

gcc/ChangeLog
gcc/ipa-icf.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr65521.c [new file with mode: 0644]

index 724d13fd0d8c558a2ff282583b78acf92387d0f7..d6603636c5bacdb101793059e7d80ea33011a315 100644 (file)
@@ -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
index bdfbd3ba362b89aefc05b75c5b60d025dc53e947..48a7d3d15d69430f832ea448e82ca41e114162f8 100644 (file)
@@ -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);
        }
     }
 
index e6e63d1a10e9141622435a41dc7ae1611103ad2f..d3958f67124d6ca136090de017f2772702a8277b 100644 (file)
@@ -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 (file)
index 0000000..97879e2
--- /dev/null
@@ -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);
+}