Message ID | ri6tu35kksn.fsf@suse.cz |
---|---|
State | New |
Headers | show |
Series | [01/12] ipa: IPA-SRA split detection simplification | expand |
On Sat, Nov 12 2022, Martin Jambor wrote: > Hi, > > When building vectors of known aggregate values, there is no point in > including those for parameters which are not used in any way > whatsoever. > > Bootstrapped and tested on x86_64-linux. OK for master? > > Thanks, > > Martin When doing LTO profiled-bootstrap, the original patch triggered a checking assert that a selected constant was not among those discovered to be known. The following avoids doing any heuristics for unused parameters too. With this patch, the whole series passes LTO profiled-bootstrap (and testing) on x86_64. Martin When building vectors of known aggregate values, there is no point in including those for parameters which are not used in any way whatsoever. This patch avoids that together with also other kinds of constants. gcc/ChangeLog: 2022-11-13 Martin Jambor <mjambor@suse.cz> * ipa-cp.cc (push_agg_values_from_edge): Do not consider constants in unused aggregate parameters. --- gcc/ipa-cp.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc index d2bcd5e5e69..313336a9ccd 100644 --- a/gcc/ipa-cp.cc +++ b/gcc/ipa-cp.cc @@ -5783,7 +5783,8 @@ push_agg_values_from_edge (struct cgraph_edge *cs, } ipcp_param_lattices *plats = ipa_get_parm_lattices (dest_info, index); - if (plats->aggs_bottom) + if (!ipa_is_param_used (dest_info, index) + || plats->aggs_bottom) continue; push_agg_values_for_index_from_edge (cs, index, res, interim); } @@ -6147,6 +6148,9 @@ decide_whether_version_node (struct cgraph_node *node) for (i = 0; i < count;i++) { + if (!ipa_is_param_used (info, i)) + continue; + class ipcp_param_lattices *plats = ipa_get_parm_lattices (info, i); ipcp_lattice<tree> *lat = &plats->itself; ipcp_lattice<ipa_polymorphic_call_context> *ctxlat = &plats->ctxlat;
> Hi, > > When building vectors of known aggregate values, there is no point in > including those for parameters which are not used in any way > whatsoever. > > Bootstrapped and tested on x86_64-linux. OK for master? OK, thanks! Honza > > Thanks, > > Martin > > > gcc/ChangeLog: > > 2022-11-11 Martin Jambor <mjambor@suse.cz> > > * ipa-cp.cc (push_agg_values_from_edge): Do not consider constants > in unused aggregate parameters. > --- > gcc/ipa-cp.cc | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc > index d2bcd5e5e69..02bd6a0fd1a 100644 > --- a/gcc/ipa-cp.cc > +++ b/gcc/ipa-cp.cc > @@ -5783,7 +5783,8 @@ push_agg_values_from_edge (struct cgraph_edge *cs, > } > > ipcp_param_lattices *plats = ipa_get_parm_lattices (dest_info, index); > - if (plats->aggs_bottom) > + if (!ipa_is_param_used (dest_info, index) > + || plats->aggs_bottom) > continue; > push_agg_values_for_index_from_edge (cs, index, res, interim); > } > -- > 2.38.0 >
diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc index d2bcd5e5e69..02bd6a0fd1a 100644 --- a/gcc/ipa-cp.cc +++ b/gcc/ipa-cp.cc @@ -5783,7 +5783,8 @@ push_agg_values_from_edge (struct cgraph_edge *cs, } ipcp_param_lattices *plats = ipa_get_parm_lattices (dest_info, index); - if (plats->aggs_bottom) + if (!ipa_is_param_used (dest_info, index) + || plats->aggs_bottom) continue; push_agg_values_for_index_from_edge (cs, index, res, interim); }