tejohnson added a comment.

In D77632#1976240 <https://reviews.llvm.org/D77632#1976240>, @wenlei wrote:

> In D77632#1974409 <https://reviews.llvm.org/D77632#1974409>, @tejohnson wrote:
>
> > In D77632#1974363 <https://reviews.llvm.org/D77632#1974363>, @wenlei wrote:
> >
> > > In D77632#1974015 <https://reviews.llvm.org/D77632#1974015>, @nikic wrote:
> > >
> > > > This change causes a ~0.5% compile-time regressions: 
> > > > http://llvm-compile-time-tracker.com/compare.php?from=5b18b6e9a84d985c0a907009fb71de7c1943bc88&to=60c642e74be6af86906d9f3d982728be7bd4329f&stat=instructions
> > > >  This is quite a lot as these things go, so it would be great if you 
> > > > could double check if there's any optimization potential here. In 
> > > > particular I'm wondering why this affects normal builds so much, even 
> > > > though they (presumably?) don't use any veclib at all.
> > >
> > >
> > > Thanks for the heads-up. This is surprising but there is a change even 
> > > when veclib is not used - in order to allow each function to use 
> > > different veclib without duplicating the work of populating vector 
> > > function list for each function, we now always pre-populate vector 
> > > function list for three supported vector libraries for each module. 
> > > However 0.5% compile-time for that work given it's per-module is not 
> > > expected. I suspect we may be passing/copying TLII around more than we 
> > > anticipated (now we always have more stuff to copy). I will take a look. 
> > > We could also turn this into a lazy initialization - only populate the 
> > > needed list for module level TLII when it's first queried by a function 
> > > level TLI.
> >
> >
> > Hmm, yeah that is surprising, because the TLII should be built once per 
> > module per TLI analysis, which is never invalidated. We've gone from 
> > populating one set of vec libs to 3, I wouldn't have thought that was 
> > particularly expensive, so it would be good to see what is going on here 
> > and confirm we are only building this once as expected.
> >
> > Looking at the compile time data at that link, interestingly the 
> > "instructions" metric increased, but not wall time or cycles or task clock 
> > - they were all neutral.
>
>
> Turns out there're a few places where we call copy ctor for TLI unnecessarily.


I assume you mean the TargetLibraryInfoImpl (TLII) here, not the 
TargetLibraryInfo (TLI), right? The latter should be cheap to copy. Are these 
the changes in BackendUtil.cpp in D77952 <https://reviews.llvm.org/D77952>? I 
had a question about that on that patch as I think we will be calling the 
initializer more. Mostly we should only be copying the TargetLibraryInfo during 
optimization though, and not the TLII impl object.

> Made some changes in D77952 <https://reviews.llvm.org/D77952> to use move 
> when possible. In addition, I should have used move for `TLI.VecLibDescs` in 
> move ctor of `TargetLibraryInfoImpl` too.




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77632/new/

https://reviews.llvm.org/D77632



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to