This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, PR 59736] Fix an IPA-CP issue with de-speculation
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jan Hubicka <hubicka at ucw dot cz>
- Date: Fri, 17 Jan 2014 18:27:43 +0100
- Subject: Re: [PATCH, PR 59736] Fix an IPA-CP issue with de-speculation
- Authentication-results: sourceware.org; auth=none
- References: <20140117171902 dot GJ23848 at virgil dot suse>
> Hi,
>
> in PR 59736, IPA-CP stumples on an already removed call graph edge.
> The reason is that it keeps an internal linked list of edge clones
> which can however now be corrupted by cgraph de-speculation machinery
> which can decide to remove an edge.
>
> In order to fix this, I made the linked-list bi-directional and added
> a remove hook that fixes it up if need be.
>
> Bootstrapped and tedted on x86_64-linux. Unfortunately, I don't have
> a simple testcase (the smallest I have is a 8.3K multidetla reduced
> mess). OK for trunk anyway?
>
> Thanks,
>
> Martin
>
>
> 2014-01-17 Martin Jambor <mjambor@suse.cz>
>
> PR ipa/59736
> * ipa-cp.c (prev_edge_clone): New variable.
> (grow_next_edge_clone_vector): Renamed to grow_edge_clone_vectors.
> Also resize prev_edge_clone vector.
> (ipcp_edge_duplication_hook): Also update prev_edge_clone.
> (ipcp_edge_removal_hook): New function.
> (ipcp_driver): Register ipcp_edge_removal_hook.
OK,
thanks!
Honza