[PATCH][PM] Add pass run listeners to the pass manager.

Juergen Ributzka juergen at apple.com
Wed May 7 13:30:59 PDT 2014


ping :-)

On May 1, 2014, at 5:17 PM, Chandler Carruth <chandlerc at google.com> wrote:

> (just FYI, i'd like to bikeshed the names and details some, but i think this is close. will write more details as soon as i have time)
> 
> 
> On Thu, May 1, 2014 at 4:42 PM, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
> 
> On 2014-May-01, at 15:07, Juergen Ributzka <juergen at apple.com> wrote:
> 
> > Hi @ll,
> >
> > I incorporated your suggestions into this patch. It extends the pass listener to also work with the new pass manager. There is some additional glue that can be removed
> > once we get rid of the legacy pass manager. The C API has been reworked to accommodate future changes and additions to the pass listener.
> >
> > The callback function signature has changed to incorporate an opaque user defined value and abstracts the current pass and IR behind a pass invocation reference.
> > The invocation type specifies when this callback has been called. Currently this supports pre- and post-pass notification callbacks.
> >
> > void (*LLVMPassListenerCallback)(void *Opaque, LLVMContextRef C, LLVMPassInvocationType T, LLVMPassInvocationRef P);
> >
> > The pass invocation reference currently only supports one API - the pass name. This could be extended in the future to obtain the pass related IR, more pass related
> > information, etc.
> >
> > Cheers,
> > Juergen
> >
> > <0001-PM-Extend-pass-listener-to-also-work-with-the-new-pa.patch>
> 
> I like the PassInvocation design.  I wasn't quite sure what you were
> planning here, but I think it solves the "what to pass back" problem
> quite neatly, giving us flexibility in the future to expand the API.
> 
> This LGTM, with the following whitespace nitpick.
> 
> > @@ -1618,12 +1618,15 @@ MPPassManager::runOnModule(Module &M) {
> >
> >      initializeAnalysisImpl(MP);
> >
> > +    M.getContext().notifyPassPreRunListeners(MP, &M);
> >      {
> >        PassManagerPrettyStackEntry X(MP, M);
> >        TimeRegion PassTimer(getPassTimer(MP));
> >
> >        LocalChanged |= MP->runOnModule(M);
> >      }
> > +    M.getContext().notifyPassPostRunListeners(MP, &M);
> > +
> 
> You inserted an extra newline here.
> 
> >
> >      Changed |= LocalChanged;
> >      if (LocalChanged)
> >
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140507/1a76f3b9/attachment.html>


More information about the llvm-commits mailing list