<div dir="ltr"><div>Thank you very much John.<br></div><div>With an environment variable I need to take some special care, but it looks like the only way to go.<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Sun, Mar 30, 2014 at 11:07 AM, John Criswell <span dir="ltr"><<a href="mailto:criswell@illinois.edu" target="_blank">criswell@illinois.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Dear Rahman,<br>
      <br>
      I think your best option is to modify the code in libLTO so that
      it runs your pass when you want it to run.  I believe the file you
      want to modify is LTOCodeGenerator.cpp.<br>
      <br>
      This does mean that passing options to your pass will be difficult
      or impossible.  However, you can either hard-code the options you
      need or read them from an environment variable if there is no easy
      way to pass options to the libLTO.<br>
      <br>
      If you want to go the llc route, then you'll need to modify the
      llc code so that it runs your pass instead of opt; sadly, I don't
      know off-hand where the code is that you would need to modify (it
      is either in llc or in some LLVM library somewhere).  The only
      reason I discourage the llc route is because it is difficult to
      get whole-program bitcode files for large programs (e.g., Apache).<br>
      <br>
      Regards,<br>
      <br>
      John Criswell<div><div class="h5"><br>
      <br>
      On 3/29/14, 12:47 AM, Rahman Lavaee wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">
      
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>Hi,<br>
              </div>
              I am finding it difficult to see how I can run an IR
              instrumentation pass after "all" IR passes.<br>
            </div>
            I previously used opt to run my pass after linking all the
            llvm bitcode files and then ran llc. <br>
            I found out that llc runs some other Function passes which
            depend on the target.<br>
          </div>
          For example, tail calls are only supported in x86 under some
          circumstances.<br>
          <br>
        </div>
        <div>Then I tried lto and link time optimization. But I found it
          difficult to specify a flag option for my instrumentation
          pass.<br>
          <br>
        </div>
        <div>Is there any way in llvm to run an IR pass after all IR
          passes?<br>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br></div>