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 > -- Richard Biener <rguent...@suse.de> SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer, Mary Higgins, Sri Rasiah; HRB 21284 (AG Nürnberg)