<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 18, 2015 at 3:34 PM, John Criswell <span dir="ltr"><<a href="mailto:jtcriswel@gmail.com" target="_blank">jtcriswel@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><span>
    <div>On 5/18/15 2:16 PM, Stephen Thomas
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">I'd like to write an inter-modular analysis pass.
        My understanding is that this should take the form of an LTO
        pass. However, I have been unable to find any resources on the
        mechanics of writing and running a custom LTO pass. Does anyone
        have any pointers?</div>
    </blockquote>
    <br></span>
    All you need to do is to write a ModulePass and modify the libLTO
    plugin to run it.  Writing a ModulePass is described in the "How to
    Write an LLVM Pass" document in the LLVM documentation. </div></blockquote><div><br></div><div>Great, that makes sense.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"> To modify
    libLTO, you'll need to read the documents on how to install it, and
    you'll need to modify the plugin (in llvm/tools/LTO, I think).  </div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">    Alternatively, you can modify the LLVM library that defines which
    passes get run when you use -O2 and -flto optimization, but the
    result is the same: you'll need to install a new libLTO plugin.<br></div></blockquote><div><br></div><div>Just to check my understanding: I will have to change LLVM source code (probably to some .cpp file in llvm/tools/LTO or in llvm/lib/LTO) and recompile in order to run my custom LTO pass? I'm double checking because for custom intra-modular analysis passes, it is not a requirement to change LLVM source code. Instead, one just adds the name of the .so to the opt invocation. (<a href="http://llvm.org/docs/WritingAnLLVMPass.html#running-a-pass-with-opt">http://llvm.org/docs/WritingAnLLVMPass.html#running-a-pass-with-opt</a>).</div><div><br></div><div>Thanks,</div><div>Steve</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    <br>
    Regards,<br>
    <br>
    John Criswell<br>
    <br>
    <blockquote type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>Thanks,</div>
        <div>Steve</div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <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><span><font color="#888888">
</font></span></pre><span><font color="#888888">
    </font></span></blockquote><span><font color="#888888">
    <br>
    <br>
    <pre cols="72">-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a href="http://www.cs.rochester.edu/u/criswell" target="_blank">http://www.cs.rochester.edu/u/criswell</a></pre>
  </font></span></div>

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