<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hello, sorry to revisit this old thread but progress seems to
have stalled on my review again. It's been nearly six months since
I submitted it and I didn't really think it would be such a hard
change to get through. Is there a point when we could consider the
original reviewer no longer to be interested and ask someone else
to step in?</p>
<p>What I've done is add a new (static) function addExtension to
TargetPassConfig to give out of tree code a way to manipulate
MachineFunctions. I did get some good feedback and made some code
changes but I haven't been getting any responses for a while now
and it's hard for me to know what to do at this point. Would
someone else be able to take a look, please?</p>
<p>The review is at <a class="moz-txt-link-freetext" href="https://reviews.llvm.org/D98591">https://reviews.llvm.org/D98591</a> and would
probably need to be rebased again if we want to go ahead with it.<br>
</p>
<p>Regards,<br>
Raoul.<br>
</p>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">On 17/06/2021 08:52, Raoul Gough wrote:<br>
</div>
<blockquote type="cite"
cite="mid:0b076dc7-2797-58ae-d5ec-0371c800a059@gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div class="moz-cite-prefix">Thanks for looking at this. Just so
you're aware I see that @ychen has just posted some further
comments on the review which I'll be addressing shortly.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">The TargetPassConfig::insertPass
(after) function would work in theory except that the
TargetPassConfig objects only have transitory lifetimes within,
e.g., LLVMTargetMachine::addPassesToEmitFile. I couldn't find
any existing way to access the TargetPassConfig objects from
out-of-tree code in order to manipulate them. The solution with
TargetPassConfig::<span class="nf">addExtension</span><span
class="p"> is to register callback(s) in a global which get
passed the TargetPassConfig object during execution of
TargetPassConfig::addMachinePasses.</span></div>
<div class="moz-cite-prefix"><span class="p"><br>
</span></div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">On 17/06/2021 00:31, Craig Topper
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAF7ks-OR+PWuhZOiHfmPXNpGspeoyG11eZALYiCJt__TuPEbRQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<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" moz-do-not-send="true">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"
moz-do-not-send="true">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"
moz-do-not-send="true">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"
moz-do-not-send="true">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" moz-do-not-send="true">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"
moz-do-not-send="true">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" moz-do-not-send="true">llvm-dev@lists.llvm.org</a><br>
<a
href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
rel="noreferrer" target="_blank"
moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
</blockquote>
</div>
</blockquote>
<p><br>
</p>
</div>
</blockquote>
</div>
</blockquote>
<p><br>
</p>
</blockquote>
<p><br>
</p>
</body>
</html>