On Wed, 15 May 2019, Bin.Cheng wrote:

> On Wed, May 15, 2019 at 4:38 PM Kewen.Lin <li...@linux.ibm.com> wrote:
> >
> > on 2019/5/15 上午10:11, Kewen.Lin wrote:
> > >
> > > on 2019/5/14 下午3:18, Richard Biener wrote:
> > >> Hum.  The function is somewhat of a hack, trying to produce
> > >> "reasonable" DECL_RTL, exposing it in expr.[ch] with this
> > >> name is eventually misleading.  Also you fail to "outline"
> > >> the most important part:
> > >>
> > >>   FOR_EACH_VEC_ELT (decl_rtl_to_reset, i, obj)
> > >>     SET_DECL_RTL (obj, NULL_RTX);
> > >>
> > >> which IMHO would warrant making this machinery a class
> > >> with the above done in its destructor?
> > >>
> > >
> > > Good suggestion!  In the IVOPTS implementation, it has one
> > > interface free_loop_data to clean up some data structures
> > > including this decl_rtl_to_reset.  While for the use in
> > > "PATCH v2 2/3", we have to clean it artificially once
> > > expanding finishes.
> > >
> > > It's better to make it as a class and ensure the clean of
> > > the vector in its destructor.
> > >
> >
> > Hi Bin,
> >
> > Could you kindly comment this?  For the use in "PATCH v2 2/3",
> > it's still the same with destructor change.  But for the use
> > in IVOPTs, I don't know the historical reason why to clean
> > up in free_loop_data instead of in place?  If it's possible to
> This is quite old code in ivopts, I suppose it's for caching results
> as you guessed.  I didn't measure if how much the caching affects
> performance.  It can be simply removed if not as useful as expected.
> Of course we need experiment data here.
> 
> Please correct me if I am wrong.  This is factored out of ivopts in
> order to reuse it in the new target hook?  As discussed in another
> thread, most target hook code can be moved to ivopts, so this
> refactoring and in-place freeing would be unnecessary, and the new
> code can also take advantage of caching?

You can use a pointer to the class in place of the global vector
used right now and allocate/deallocate with new/delete in the
exactly same places than before?  Cleaning things up can be
done independently and that would preserve current behavior.

Richard.

> Thanks,
> bin
> > reuse, for example some object was prepared and we don't need
> > to prepare for it again during the same loop handling, then
> > the destructor proposal will clean it up too early and
> > inefficient.  If so, one flag in constructor to control this
> > might be required.
> >
> > Thanks a lot in advance!
> >
> > Kewen
> >
> >
> > >> Maybe name the functions prepare_guessed_decl_rtl ()
> > >> and the new class guessed_decl_rtl?
> > >>
> > > OK.  Or "tmp" instead of "guessed"?
> > >
> > >
> > > Thanks,
> > > Kewen
> > >
> > >> Now looking how you'll end up using this...
> > >>
> > >> Richard.
> > >>
> > >
> >
> 

-- 
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)

Reply via email to