[llvm-dev] Review wanted - contribution for legacy pass manager (machine pass extensions)

Raoul Gough via llvm-dev llvm-dev at lists.llvm.org
Wed Jun 16 12:59:48 PDT 2021

Hi Craig, I see you listed as the code owner for the x86 backend and I 
was wondering if you'd have time to comment on my review at 
https://reviews.llvm.org/D98591 ? This adds an extension mechanism to 
TargetPassConfig to allow out-of-tree code to provide machine passes for 
an existing target.

Arthur has raised the question of whether it's appropriate to have such 
an extension mechanism so it might help if I explain my motivating 
example. I'm working on a way to do runtime inlining of functions 
referenced via pointers, including C++ virtual function calls. This 
works using ahead-of-time compiled code that has been annotated to 
derive call-tree information at runtime and potentially recompile parts 
of the code using bitcode embedded as data in the executable. To build 
the call tree I install a context pointer in a callee-saved register at 
the relevant call sites and retrieve it at function entry, both of which 
I do via a machine pass that runs just before the register allocator. 
There are actually several other complications but that's the starting 
point for wanting to inject a custom machine pass for an existing 
target. What do you think?

There are some more details on my github page 
https://github.com/drti/drti if you're interested.


On 15/06/2021 23:22, Arthur Eubanks wrote:
> I'm not super familiar with the codegen pipeline, perhaps some backend 
> people can take a look?
> A question is, do we want extensions like in the middle-end 
> optimization pipeline? I don't see why not, this mirrors the existing 
> extensions for the optimization pipeline. But it'd be good to get some 
> more opinions from people more knowledgeable.
> On Mon, Jun 14, 2021 at 8:04 AM David Blaikie <dblaikie at gmail.com 
> <mailto:dblaikie at gmail.com>> wrote:
>     Arthur - any idea who might be good to review this?
>     On Mon, Jun 7, 2021 at 6:20 AM Raoul Gough via llvm-dev
>     <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>         Hello llvm-dev, I have a code contribution for the legacy pass
>         manager
>         and I'm having trouble finding anyone to finish reviewing it.
>         I've made
>         some improvements based on earlier feedback from @ychen on
>         Phabricator
>         but since then nobody has given final approval. Can anyone
>         help with
>         this or point me in the right direction?
>         I couldn't see anyone listed in the CODE_OWNERS.txt for this
>         area of the
>         code base. From what I understand the new pass manager still
>         doesn't
>         handle the target-specific code, so I think the code is in the
>         right
>         place for now at least. I'd be happy to move it to the new
>         pass manager
>         if that's currently possible, of course.
>         This is related to my (out of tree) runtime inlining project
>         and adds
>         minimal support for target-level extensions in a similar way to
>         addGlobalExtension in the legacy IR PassManagerBuilder...
>         https://reviews.llvm.org/D98591 <https://reviews.llvm.org/D98591>
>         Regards,
>         Raoul Gough.
>         _______________________________________________
>         LLVM Developers mailing list
>         llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>         https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>         <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/20210616/d866aabf/attachment.html>

More information about the llvm-dev mailing list