Message ID | 20190520093657.kfeyumjhehropikh@kam.mff.cuni.cz |
---|---|
State | New |
Headers | show |
Series | Fix alias oracle stats | expand |
On Mon, 20 May 2019, Jan Hubicka wrote: > Hi, > at the moment the alias stats outputs mostly 0 for res_may_alias_p > (which is supposed to be main entry point to the alias oracle). > I think this is because of code refactoring where we added more variants > of this function and we want to do stats around the main worker. > > Bootstrapped/regtested x86_64-linux, OK? OK. > * tree-ssa-alias.c (refs_may_alias_p_2): Break out from ... > (refs_may_alias_p_1): ... here; update stats. > (refs_may_alias_p): Do not update stats here. > Index: tree-ssa-alias.c > =================================================================== > --- tree-ssa-alias.c (revision 271379) > +++ tree-ssa-alias.c (working copy) > @@ -1399,8 +1466,8 @@ indirect_refs_may_alias_p (tree ref1 ATT > > /* Return true, if the two memory references REF1 and REF2 may alias. */ > > -bool > -refs_may_alias_p_1 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p) > +static bool > +refs_may_alias_p_2 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p) > { > tree base1, base2; > poly_int64 offset1 = 0, offset2 = 0; > @@ -1557,6 +1624,20 @@ refs_may_alias_p_1 (ao_ref *ref1, ao_ref > gcc_unreachable (); > } > > +/* Return true, if the two memory references REF1 and REF2 may alias > + and update statistics. */ > + > +bool > +refs_may_alias_p_1 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p) > +{ > + bool res = refs_may_alias_p_2 (ref1, ref2, tbaa_p); > + if (res) > + ++alias_stats.refs_may_alias_p_may_alias; > + else > + ++alias_stats.refs_may_alias_p_no_alias; > + return res; > +} > + > static bool > refs_may_alias_p (tree ref1, ao_ref *ref2, bool tbaa_p) > { > @@ -1569,15 +1650,9 @@ bool > refs_may_alias_p (tree ref1, tree ref2, bool tbaa_p) > { > ao_ref r1, r2; > - bool res; > ao_ref_init (&r1, ref1); > ao_ref_init (&r2, ref2); > - res = refs_may_alias_p_1 (&r1, &r2, tbaa_p); > - if (res) > - ++alias_stats.refs_may_alias_p_may_alias; > - else > - ++alias_stats.refs_may_alias_p_no_alias; > - return res; > + return; refs_may_alias_p_1 (&r1, &r2, tbaa_p); > } > > /* Returns true if there is a anti-dependence for the STORE that >
Hi honza, On 20 May 2019 11:38:14 CEST, Richard Biener <rguenther@suse.de> wrote: >On Mon, 20 May 2019, Jan Hubicka wrote: > >> Hi, >> at the moment the alias stats outputs mostly 0 for res_may_alias_p >> (which is supposed to be main entry point to the alias oracle). >> I think this is because of code refactoring where we added more >variants >> of this function and we want to do stats around the main worker. >> >> Bootstrapped/regtested x86_64-linux, OK? > >OK. >> @@ -1569,15 +1650,9 @@ bool >> refs_may_alias_p (tree ref1, tree ref2, bool tbaa_p) >> { >> ao_ref r1, r2; >> - bool res; >> ao_ref_init (&r1, ref1); >> ao_ref_init (&r2, ref2); >> - res = refs_may_alias_p_1 (&r1, &r2, tbaa_p); >> - if (res) >> - ++alias_stats.refs_may_alias_p_may_alias; >> - else >> - ++alias_stats.refs_may_alias_p_no_alias; >> - return res; >> + return; refs_may_alias_p_1 (&r1, &r2, tbaa_p); >> } Maybe remove the dead call to refs_may_alias_p_1() after the return though, please. TIA
> Hi honza, > > On 20 May 2019 11:38:14 CEST, Richard Biener <rguenther@suse.de> wrote: > >On Mon, 20 May 2019, Jan Hubicka wrote: > > > >> Hi, > >> at the moment the alias stats outputs mostly 0 for res_may_alias_p > >> (which is supposed to be main entry point to the alias oracle). > >> I think this is because of code refactoring where we added more > >variants > >> of this function and we want to do stats around the main worker. > >> > >> Bootstrapped/regtested x86_64-linux, OK? > > > >OK. > > >> @@ -1569,15 +1650,9 @@ bool > >> refs_may_alias_p (tree ref1, tree ref2, bool tbaa_p) > >> { > >> ao_ref r1, r2; > >> - bool res; > >> ao_ref_init (&r1, ref1); > >> ao_ref_init (&r2, ref2); > >> - res = refs_may_alias_p_1 (&r1, &r2, tbaa_p); > >> - if (res) > >> - ++alias_stats.refs_may_alias_p_may_alias; > >> - else > >> - ++alias_stats.refs_may_alias_p_no_alias; > >> - return res; > >> + return; refs_may_alias_p_1 (&r1, &r2, tbaa_p); > >> } > > Maybe remove the dead call to refs_may_alias_p_1() after the return though, please. This is OK in trunk. I wonder how that got into the email :) Thanks for noticing though. Honza > > TIA
Index: tree-ssa-alias.c =================================================================== --- tree-ssa-alias.c (revision 271379) +++ tree-ssa-alias.c (working copy) @@ -1399,8 +1466,8 @@ indirect_refs_may_alias_p (tree ref1 ATT /* Return true, if the two memory references REF1 and REF2 may alias. */ -bool -refs_may_alias_p_1 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p) +static bool +refs_may_alias_p_2 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p) { tree base1, base2; poly_int64 offset1 = 0, offset2 = 0; @@ -1557,6 +1624,20 @@ refs_may_alias_p_1 (ao_ref *ref1, ao_ref gcc_unreachable (); } +/* Return true, if the two memory references REF1 and REF2 may alias + and update statistics. */ + +bool +refs_may_alias_p_1 (ao_ref *ref1, ao_ref *ref2, bool tbaa_p) +{ + bool res = refs_may_alias_p_2 (ref1, ref2, tbaa_p); + if (res) + ++alias_stats.refs_may_alias_p_may_alias; + else + ++alias_stats.refs_may_alias_p_no_alias; + return res; +} + static bool refs_may_alias_p (tree ref1, ao_ref *ref2, bool tbaa_p) { @@ -1569,15 +1650,9 @@ bool refs_may_alias_p (tree ref1, tree ref2, bool tbaa_p) { ao_ref r1, r2; - bool res; ao_ref_init (&r1, ref1); ao_ref_init (&r2, ref2); - res = refs_may_alias_p_1 (&r1, &r2, tbaa_p); - if (res) - ++alias_stats.refs_may_alias_p_may_alias; - else - ++alias_stats.refs_may_alias_p_no_alias; - return res; + return; refs_may_alias_p_1 (&r1, &r2, tbaa_p); } /* Returns true if there is a anti-dependence for the STORE that