]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR ipa/61211 (ICE: verify_cgraph_node failed: edge points to wrong declaration...
authorMartin Jambor <mjambor@suse.cz>
Fri, 20 Jun 2014 09:54:39 +0000 (11:54 +0200)
committerMartin Jambor <jamborm@gcc.gnu.org>
Fri, 20 Jun 2014 09:54:39 +0000 (11:54 +0200)
2014-06-20  Martin Jambor  <mjambor@suse.cz>

PR ipa/61211
* cgraph.c (clone_of_p): Allow skipped_branch to deal with
expanded clones.

From-SVN: r211844

gcc/ChangeLog
gcc/cgraph.c

index 7387708ebf4b7b40e6cd1d1d0451ac113c39f91f..6b66a35f957b88daa0335b4d54f946fd650869b4 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-20  Martin Jambor  <mjambor@suse.cz>
+
+       PR ipa/61211
+       * cgraph.c (clone_of_p): Allow skipped_branch to deal with
+       expanded clones.
+
 2014-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * config/aarch64/iterators.md (VCOND): Handle SI and HI modes.
index 610bf6717c153e35de26cf21d4cd286023785d8d..afd41b71798e93a033ca1b312bc5204e02923f52 100644 (file)
@@ -2563,11 +2563,16 @@ clone_of_p (struct cgraph_node *node, struct cgraph_node *node2)
       skipped_thunk = true;
     }
 
-  if (skipped_thunk
-      && (!node2->clone_of
-         || !node2->clone.args_to_skip
-         || !bitmap_bit_p (node2->clone.args_to_skip, 0)))
-    return false;
+  if (skipped_thunk)
+    {
+      if (!node2->clone.args_to_skip
+         || !bitmap_bit_p (node2->clone.args_to_skip, 0))
+       return false;
+      if (node2->former_clone_of == node->decl)
+       return true;
+      else if (!node2->clone_of)
+       return false;
+    }
 
   while (node != node2 && node2)
     node2 = node2->clone_of;