aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2014-06-20 11:54:39 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2014-06-20 11:54:39 +0200
commit803d0ab0e8ca92a0dcfa721771854c49ec3c1256 (patch)
tree55a6b3fabc9d0db6cd2653ee8573ef1791aad679 /gcc
parent278821f265f3808a2b0d033737145e89d51d2218 (diff)
downloadgcc-803d0ab0e8ca92a0dcfa721771854c49ec3c1256.zip
gcc-803d0ab0e8ca92a0dcfa721771854c49ec3c1256.tar.gz
gcc-803d0ab0e8ca92a0dcfa721771854c49ec3c1256.tar.bz2
re PR ipa/61211 (ICE: verify_cgraph_node failed: edge points to wrong declaration with -O3 -fno-inline)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraph.c15
2 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7387708..6b66a35 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 610bf67..afd41b7 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -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;