Hello Everyone, Just subscribed to the mailing list. I was wondering how I am going to fetch each functions of a specific source code file (c/c++) using the LLVM framework. For instance, I would like to apply certain passes using llvm-opt on certain functions not the whole file. I would appreciate any hints or idea leading me about the starting point. Regards, -Amir -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141021/c21e3d1b/attachment.html>
On 10/21/14, 5:27 PM, Amir H. Ashouri wrote:> Hello Everyone, > > Just subscribed to the mailing list. > > I was wondering how I am going to fetch each functions of a specific > source code file (c/c++) using the LLVM framework. For instance, I > would like to apply certain passes using llvm-opt on certain functions > not the whole file. > > I would appreciate any hints or idea leading me about the starting point.You might be able to use the llvm-extract tool to pull out the functions you want into a separate bitcode file and then use opt to optimize them. You'd then need to create a second bitcode file that contains the remaining functions (using llvm-extract again). Finally, you'd take the optimized bitcode file and the bitcode file containing the other functions and link them together using clang and libLTO or the llvm-link tool. Regards, John Criswell> > Regards, > > -Amir > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-- John Criswell Assistant Professor Department of Computer Science, University of Rochester http://www.cs.rochester.edu/u/criswell -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141021/8438a55f/attachment.html>
Thanks for the answer John. I checked the llvm-extract and it works, but my concern is if the output of the extract could be saved as .ll instead of .bc. Sort of human-readable format so that I can parse it. Otherwise, it is better to parse the foo.ll file right away instead of using the extract tool. Please correct me if I am wrong. Thanks, -Amir On Tue, Oct 21, 2014 at 7:02 PM, John Criswell <jtcriswel at gmail.com> wrote:> On 10/21/14, 5:27 PM, Amir H. Ashouri wrote: > > Hello Everyone, > > Just subscribed to the mailing list. > > I was wondering how I am going to fetch each functions of a specific > source code file (c/c++) using the LLVM framework. For instance, I would > like to apply certain passes using llvm-opt on certain functions not the > whole file. > > I would appreciate any hints or idea leading me about the starting point. > > > You might be able to use the llvm-extract tool to pull out the functions > you want into a separate bitcode file and then use opt to optimize them. > You'd then need to create a second bitcode file that contains the remaining > functions (using llvm-extract again). Finally, you'd take the optimized > bitcode file and the bitcode file containing the other functions and link > them together using clang and libLTO or the llvm-link tool. > > Regards, > > John Criswell > > > Regards, > > -Amir > > > _______________________________________________ > LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > -- > John Criswell > Assistant Professor > Department of Computer Science, University of Rochesterhttp://www.cs.rochester.edu/u/criswell > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141021/4c7f3ed8/attachment.html>