> The bug in the walker loop here IMO predated C++ conversion, but to > avoid member function freeing THIS we probably want to have: > > cgraph_edge::remove (e), > symtab_node::remove (e), > ipa_ref::remove (ref), > cgraph_node::resolve_speculation (e, target) Actually thinking of this, perhas remove_speculation is better to make it clear that it removes something ;)
Thanks for reminiding me of this issue :) Honza > > I suppose good time for the conversion would be after remaining patches > are merget. If you would have time to do that even better ;) > > > ...and then we can (and should and will) document that it can free the > > edge. > It speaks about removing edges and return value, > > Speculative call edge turned out to be direct call to CALLEE_DECL. > > Remove the speculative call sequence and return edge representing the > call. > It is up to caller to redirect the call as appropriate. > > We could add > Edge E may be freed if it is resolved to other edge of the > speculative call. > > Honza > > > > Martin