[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