[PR 68851] Do not collect thunks in callect_callers
Jan Hubicka
hubicka@ucw.cz
Mon Dec 14 18:19:00 GMT 2015
> Hi,
>
> in PR 68851, IPA-CP decides to clone for all known contexts, even when
> it is not local because the code is not supposed to grow anyway. The
> code doing that uses collect_callers method of cgraph_edge to find all
> the edges which are to be redirected in such case. However, there is
> also an edge from a hunk to the cloned node and that gets collected
> and redirected too. Later on, this inconsistency (a thunk calling a
> wrong node) leads to an assert in comdat handling, but it can lead to
> all sorts of trouble.
>
> The following patch fixes it by checking that thunks are not added
> into the vector in that method (which is only used by IPA-CP at this
> one spot and IPA-SRA so it should be fine). Bootstrapped and tested
> on x86_64-linux. OK for trunk? And perhaps for the gcc-5 branch too?
>
> Thanks,
>
> Martin
>
>
> 2015-12-14 Martin Jambor <mjambor@suse.cz>
>
> PR ipa/68851
> * cgraph.c (collect_callers_of_node_1): Do not collect thunks.
> * cgraph.h (cgraph_node): Change comment of collect_callers.
>
> testsuite/
> * g++.dg/ipa/pr68851.C: New test.
This is OK (for branches too if it won't cause issues for a week)
thanks!
Honza
More information about the Gcc-patches
mailing list