[llvm-dev] Porting Pass to New PassManager

Fedor Sergeev via llvm-dev llvm-dev at lists.llvm.org
Tue Sep 25 03:15:39 PDT 2018


Hmm... frontends should be using PassBuilder anyway.
And if they are using PassBuilder then they are using PassRegistry.def 
as well - all the
PassBuilder::register*/parse*/is* methods do include PassRegistry.def in 
their bodies.

I was under impression that callbacks are primarily for plugins usage.

regards,
   Fedor.

On 09/25/2018 12:43 PM, Philip Pfaffe wrote:
> Hi Leonard, Fedor,
>
> while it's true that RegisterPass is not applicable for new-pm passes, 
> PassRegistry.def is not the whole story. Passes in PassRegistry are 
> available for the opt tool. The sanitizers are passes that usually get 
> added to the pipeline by the frontend. There, you need to use 
> PassBuilder's callbacks mechanism to hook the sanitizer into the 
> optimizer.
>
> Assuming you're willing to contribute your changes, please share your 
> progress! Thank you for making a move on this!
>
> Cheers,
> Philip
>
> On Tue, Sep 25, 2018 at 8:27 AM Fedor Sergeev via llvm-dev 
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
>     Leonard,
>
>     nope, the PassRegistry stuff is all about legacy pass manager.
>     legacy namespace has not been extensively used to mark all the
>     legacy-related stuff
>     (say, even Pass class which is a base for legacy passes is not under
>     legacy namespace).
>
>     Registration for new-pass-manager passes happens in
>     lib/Passes/PassRegistry.def.
>
>     Usually, when porting from legacy to new the main difference is
>     analysis
>     handling,
>     so people factor out the worker code into a method that takes
>     analyses
>     and call
>     this function both in legacy and new-pm passes.
>     In many cases it takes just a handful lines of code.
>
>     Feel free to ask questions, if any.
>
>     regards,
>        Fedor.
>
>     On 09/25/2018 02:54 AM, Leonard Chan via llvm-dev wrote:
>      > Hi all,
>      >
>      > I'm attempting to move the AddressSanitizer pass from the legacy
>      > PassManager to the new one because the new one has various benefits
>      > over legacy and wanted to clarify on something. Does creating the
>      > static RegisterPass struct register the pass with the new
>     PassManager?
>      >
>      > It seems that RegisterPass does the same things that the
>      > INITIALIZE_PASS_* macros do but it registers the pass with
>      > PassRegistry::getPassRegistry(). What I'm not sure of is if
>     this uses
>      > the new PassManager infrastructure. Exploring the code doesn't
>     seem to
>      > show that this PassRegistry touches anything in the legacy
>     namespace,
>      > but I wanted double confirmation on this.
>      >
>      > Thanks,
>      > Leonard
>      > _______________________________________________
>      > LLVM Developers mailing list
>      > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>      > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>     _______________________________________________
>     LLVM Developers mailing list
>     llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180925/08833d23/attachment.html>


More information about the llvm-dev mailing list