<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>