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