diff options
author | Martin Jambor <mjambor@suse.cz> | 2014-06-20 11:54:39 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2014-06-20 11:54:39 +0200 |
commit | 803d0ab0e8ca92a0dcfa721771854c49ec3c1256 (patch) | |
tree | 55a6b3fabc9d0db6cd2653ee8573ef1791aad679 /gcc | |
parent | 278821f265f3808a2b0d033737145e89d51d2218 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cgraph.c | 15 |
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; |