> 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 <mjam...@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