<div dir="ltr">I just got back from vacation so I haven't had much time to look at your patch yet. My first question is going to be, is this something that can already be done with the existing TargetPassConfig::insertPassAfter mechanism? I don't know the history of that mechanism just that it exists.<div><br></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 16, 2021 at 12:59 PM Raoul Gough <<a href="mailto:github.drti@gmail.com">github.drti@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<div>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 <a href="https://reviews.llvm.org/D98591" target="_blank">https://reviews.llvm.org/D98591</a> ? This
adds an extension mechanism to <span>TargetPassConfig
to allow out-of-tree code to provide machine passes for an
existing target.<br>
</span></div>
<div><br>
</div>
<div>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?</div>
<div><br>
</div>
<div>There are some more details on my
github page <a href="https://github.com/drti/drti" target="_blank">https://github.com/drti/drti</a> if you're interested.<br>
</div>
<div><br>
</div>
<div>Regards,</div>
<div>Raoul.<br>
</div>
<div><br>
</div>
<div>On 15/06/2021 23:22, Arthur Eubanks
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">I'm not super familiar with the codegen pipeline,
perhaps some backend people can take a look?
<div><br>
</div>
<div>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.</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Jun 14, 2021 at 8:04
AM David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">Arthur - any idea who might be good to review
this?</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Jun 7, 2021 at
6:20 AM Raoul Gough via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello llvm-dev, I have
a code contribution for the legacy pass manager <br>
and I'm having trouble finding anyone to finish reviewing
it. I've made <br>
some improvements based on earlier feedback from @ychen on
Phabricator <br>
but since then nobody has given final approval. Can anyone
help with <br>
this or point me in the right direction?<br>
<br>
I couldn't see anyone listed in the CODE_OWNERS.txt for
this area of the <br>
code base. From what I understand the new pass manager
still doesn't <br>
handle the target-specific code, so I think the code is in
the right <br>
place for now at least. I'd be happy to move it to the new
pass manager <br>
if that's currently possible, of course.<br>
<br>
This is related to my (out of tree) runtime inlining
project and adds <br>
minimal support for target-level extensions in a similar
way to <br>
addGlobalExtension in the legacy IR PassManagerBuilder...
<br>
<a href="https://reviews.llvm.org/D98591" rel="noreferrer" target="_blank">https://reviews.llvm.org/D98591</a><br>
<br>
Regards,<br>
Raoul Gough.<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
</blockquote>
</div>
</blockquote>
<p><br>
</p>
</div>
</blockquote></div>