<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body ocsi="0" fpstyle="1" bgcolor="#FFFFFF">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hi John,<br>
<br>
Really appreciate your detailed information.<br>
The first one works for me. <br>
I will take a look at the third solution. <br>
<br>
Thanks again, <br>
Yuxi<br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF669737"><font face="Tahoma" color="#000000" size="2"><b>From:</b> John Criswell [jtcriswel@gmail.com]<br>
<b>Sent:</b> Friday, March 11, 2016 11:26 AM<br>
<b>To:</b> Yuxi Chen; llvm-dev@lists.llvm.org<br>
<b>Cc:</b> llvmdev-bounces@cs.uiuc.edu; llvmdev@cs.uiuc.edu<br>
<b>Subject:</b> Re: [llvm-dev] big module for a project<br>
</font><br>
</div>
<div></div>
<div>
<div class="moz-cite-prefix">Dear Yuxi,<br>
<br>
There are three general ways to do this (two of which have already been mentioned).<br>
<br>
First, you can change the Makefiles to emit bitcode and then use llvm-link to link all the bitcode files together into a big bitcode file.  You can then run the opt program on this large bitcode file.<br>
<br>
Second, you can use some third-party tools (for lack of a better term) that will get you a single bitcode file with fewer changes to the Makefiles.  I'm not very familiar with these, but I think others have commented on them.<br>
<br>
Third, you can add your analysis pass to the libLTO library and use LLVM's link-time optimization framework to run your analysis.  Documentation libLTO can be found at
<a class="moz-txt-link-freetext" href="http://llvm.org/docs/LinkTimeOptimization.html" target="_blank">
http://llvm.org/docs/LinkTimeOptimization.html</a> and <a class="moz-txt-link-freetext" href="http://llvm.org/docs/GoldPlugin.html" target="_blank">
http://llvm.org/docs/GoldPlugin.html</a>.  LLVM's LTO infrastructure is designed to be transparent (i.e., you shouldn't have to modify Makefiles to use it), though some programs' Makefiles are more...complaint than others.<br>
<br>
I've used the libLTO approach for large programs with reasonable success.  However, some of the other third-party approaches have been reported to work well, so you might try looking at those.<br>
<br>
Regards,<br>
<br>
John Criswell<br>
<br>
On 3/10/16 9:54 PM, Yuxi Chen via llvm-dev wrote:<br>
</div>
<blockquote type="cite"><style id="owaParaStyle" type="text/css">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
BODY {direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;}P {margin-top:0;margin-bottom:0;}</style>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">Hi All,<br>
<br>
I am using clang to compile Mysql source code. Because I want to do some inter-procedural analysis, hopefully, I want to get a .o(bitcode) file(a module) containing all possible function declarations and definitions. Is it possible to do that ? Or you guys
 have some suggestions?<br>
<br>
To be clear, like Mysql, there is a mysqld routine, which is a major routine. I want to mysqld.o(which is generated by clang) to contain all possible function declarations and definitions. So when I do some analysis, I just need load one module, which is mysqld.o,
 instead of all .o files. <br>
<br>
<br>
Best,<br>
Yuxi<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader" target="_blank"></fieldset> <br>
<pre>_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a class="moz-txt-link-freetext" href="http://www.cs.rochester.edu/u/criswell" target="_blank">http://www.cs.rochester.edu/u/criswell</a></pre>
</div>
</div>
</div>
</body>
</html>