[llvm-dev] Adding custom callback function before/after passes

Fedor Sergeev via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 11 07:44:24 PST 2019



On 12/3/19 8:01 PM, Juneyoung Lee via llvm-dev wrote:
> Hello all,
>
> Is there a way to register callback that runs before/after passes?
> PassTimingInfo seems to do a similar thing by calling 
> PassInstrumentationCallbacks::registerBeforePassCallback / 
> registerAfterPassCallback, but it is hard-wired with 
> StandardInstrumentations class.
PassInstrumentation framework was introduced to the new PassManager 
specifically in mind with ability
to register arbitrary callbacks and execute them as pass manager 
traverses through the pass pipeline.

PassInstrumentationCallbacks are indeed the entity to register your 
callbacks into, before passing it to PassBuilder;
You can check how it is being done in 
`llvm/tools/opt/NewPMDriver.cpp`llvm::runPassPipeline.

StandardInstrumentations are just a few "standard" callbacks that 
provide "standard" functionality, like -print-after-all or -time-passes.
StandardInstrumentations registers its individual instrumentations the 
same way you would register your own.

Note, that PassInstrumentation is only supported in new pass manager 
(opt -passes=  or clang -fexperimental-new-pass-manager).

regards,
   Fedor.

> Do we have something similar to RegisterStandardPasses, so custom 
> callbacks can be added from somewhere outside LLVM?
>
> Thanks,
> Juneyoung Lee
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://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/20191211/51f9675d/attachment.html>


More information about the llvm-dev mailing list