> Hi. > > IPA pure const should always construct ipa_reduced_postorder with > possibility to cross AVAIL_INTERPOSABLE boundary. The pass itself > can then properly stop propagation on these symbols. > > The patch is pre-approved by Honza. > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Thanks, > Martin > > gcc/ChangeLog: > > 2019-02-08 Martin Liska <mli...@suse.cz> > > PR ipa/89009 > * ipa-cp.c (build_toporder_info): Remove usage of a param. > * ipa-inline.c (inline_small_functions): Likewise. > * ipa-pure-const.c (propagate_pure_const): Likewise. > (propagate_nothrow): Likewise. > * ipa-reference.c (propagate): Likewise. > * ipa-utils.c (struct searchc_env): Remove unused field. > (searchc): Always search across AVAIL_INTERPOSABLE. > (ipa_reduced_postorder): Always allow AVAIL_INTERPOSABLE as > the only called IPA pure const can properly not propagate > across interposable boundary. > * ipa-utils.h (ipa_reduced_postorder): Remove param. > @@ -105,7 +104,7 @@ searchc (struct searchc_env* env, struct cgraph_node *v, > > if (w->aux > && (avail > AVAIL_INTERPOSABLE > - || (env->allow_overwritable && avail == AVAIL_INTERPOSABLE))) > + || avail == AVAIL_INTERPOSABLE)) > { > w_info = (struct ipa_dfs_info *) w->aux; > if (w_info->new_node)
This optimizes >= AVAIL_INTERPOSABLE then, but for ipa-cp, ipa-inline, ipa-pure-const we do not want interposable calls to close SCC regions (because we can not propagate here). ipa-reference is more subtle - interposable calls close SCC regions IFF they are declared leaf. Can you, please, update ignore_edge_p of indiviual optimization passes this way? (I.e. for all but ipa-reference add aval <= AVAIL_INTERPOSABLE check for the availability of the target function and for ipa-reference test also leaf attribute?). In all those cases we also want to check that given optimization pass is enabled for both caller and callee. In other cases we do not want to consider them part of SCCs as well. It may make sense to do this as one change or I can do that incrementally. Thanks, Honza