vsk added a comment.

In D57265#1393814 <https://reviews.llvm.org/D57265#1393814>, @fedor.sergeev 
wrote:

> In D57265#1393453 <https://reviews.llvm.org/D57265#1393453>, @vsk wrote:
>
> > > I'd prefer not adding this kind of state to PassBuilder. SplitColdCode is 
> > > soemthing that refers to the construction of one particular pipeline, not 
> > > to pipeline-building in general. It should be an argument passed down 
> > > through the build*Pipeline calls.
> >
> > I'm not sure I understand the distinction being made here -- could you 
> > elaborate? Isn't enabling a pass related to pipeline-building in general? 
> > If not, I don't see how arguments to build*Pipeline //do// become related 
> > to pipeline-building in general.
> >
> > For context, I've modeled the addition of the SplitColdCode member to 
> > PassBuilder on PGOOpt (c.f. PGOOptions::RunProfileGen). One thing I like 
> > about this approach is that it doesn't require changing IR, or changing 
> > very many different APIs. But if it's really not reasonable, I'm happy to 
> > take another shot at it.
>
>
> I cant say for PGOOpt in particular, but overall idea of PassBuilder is that, 
> well, it is not "builder" as per "builder pattern".
>  You do not fill it with parts of a complex pipeline object and then press a 
> magical "build" button.
>  Instead you ask it to build various "named" pipelines, or just parse it from 
> text.
>  If you compare with PassManagerBuilder, which contains a dozen of various 
> data members that seem to drive the pipeline construction,
>  PassBuilder contains only a few. And the purpose of PassBuilder members is 
> to be used during individual *pass*es creation.
>
> Say, you wont find OptLevel there. Instead it is being passed as an argument 
> to build*Pipeline functions.
>
> As for PGOOpts - it seems to be the only member that stands out.
>  And to me it looks like we should remove it from PassBuilder either, and 
> start passing it to build*Pipeline functions as well.
>  But honestly, this is the first time I really looked through the PGOOpts 
> code, so I might be well mistaken.


Thanks everyone for your patient feedback. I think I understand the advantages 
of keeping state out of the pipeline builder now.

Teresa's earlier suggestion to use an IR attribute seems like a promising 
approach. In particular, it makes it simple to correctly enable/disable 
splitting during LTO. I'll try to post an updated patch soon.


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

https://reviews.llvm.org/D57265



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

Reply via email to