On Tue, Oct 20, 2020 at 1:02 PM Martin Jambor <mjam...@suse.cz> wrote: > > Hi, > > On Tue, Oct 20 2020, Richard Biener wrote: > > On Mon, Oct 19, 2020 at 7:52 PM Gary Oblock <g...@amperecomputing.com> > > wrote: > >> > >> Richard, > >> > >> I guess that will work for me. However, since it > >> was decided to remove an identical function, > >> why weren't the calls to it adjusted to reflect it? > >> If the call wasn't transformed that means it will > >> be mapped at some later time. Is that mapping > >> available to look at? Because using that would > >> also be a potential solution (assuming call > >> graph information exists for the deleted function.) > > > > I'm not sure how the transitional cgraph looks like > > during WPA analysis (which is what we're talking about?), > > but definitely the IL is unmodified in that state. > > > > Maybe Martin has an idea. > > > > Exactly, the cgraph_edges is where the correct call information is > stored until the inlining transformation phase calls > cgraph_edge::redirect_call_stmt_to_callee is called on it - inlining is > a special pass in this regard that performs this IPA-infrastructure > function in addition to actual inlining. > > In cgraph means the callee itself but also information in > e->callee->clone.param_adjustments which might be interesting for any > struct-reorg-like optimizations (...and in future possibly in other > transformation summaries). > > The late IPA passes are in very unfortunate spot here since they run > before the real-IPA transformation phases but after unreachable node > removals and after clone materializations and so can see some but not > all of the changes performed by real IPA passes. The reason for that is > good cache locality when late IPA passes are either not run at all or > only look at small portion of the compilation unit. In such case IPA > transformations of a function are followed by all the late passes > working on the same function. > > Late IPA passes are unfortunately second class citizens and I would > strongly recommend not to use them since they do not fit into our > otherwise robust IPA framework very well. We could probably provide a > mechanism that would allow late IPA passes to run all normal IPA > transformations on a function so they could clearly see what they are > looking at, but extensive use would slow compilation down so its use > would be frowned upon at the very least.
So IPA PTA does get_body () on the nodes it wants to analyze and I thought that triggers any pending IPA transforms? Richard. > Martin >