Thanks Markus. Having llvm-as to turn the extracted function.bc file to .ll caused an error saying: *llvm-as-3.4: function_bc:1:1: error: expected top-level entity* *BC! #AI29bEBB2I (some more binary)* This error is just the same error that I received while using llvm-extract on a .c file (not .bc or .ll). Do I have to include other things in the command ? I mean generating a function.ll without anything as header, Module ID, etc might be wrong. right ? -Amir On Tue, Oct 21, 2014 at 7:51 PM, Markus Timpl <tima0900 at googlemail.com> wrote:> You can use llvm-dis to turn .bc files into .ll files. > Am 22.10.2014 01:44 schrieb "Amir H. Ashouri" < > amirhossein.ashouri at gmail.com>: > > 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 >>> >>> >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141021/5cf06398/attachment.html>
On Tue, Oct 21, 2014 at 5:22 PM, Amiir H. Ashouri < amirhossein.ashouri at gmail.com> wrote:> Thanks Markus. > > Having llvm-as to turn the extracted function.bc file to .ll caused an > error saying: > >llvm-as is for converting bitcode (.bc) to readable LLVM IR (.ll) llvm-dis is for the other direction Eli> *llvm-as-3.4: function_bc:1:1: error: expected top-level entity* > > *BC! #AI29bEBB2I (some more binary)* > > This error is just the same error that I received while using llvm-extract > on a .c file (not .bc or .ll). > > > Do I have to include other things in the command ? I mean generating a > function.ll without anything as header, Module ID, etc might be wrong. > right ? > > > -Amir > > On Tue, Oct 21, 2014 at 7:51 PM, Markus Timpl <tima0900 at googlemail.com> > wrote: > >> You can use llvm-dis to turn .bc files into .ll files. >> Am 22.10.2014 01:44 schrieb "Amir H. Ashouri" < >> amirhossein.ashouri at gmail.com>: >> >> 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 >>>> >>>> >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141021/0c91fe09/attachment.html>
On Tue, Oct 21, 2014 at 5:32 PM, Eli Bendersky <eliben at google.com> wrote:> > > On Tue, Oct 21, 2014 at 5:22 PM, Amiir H. Ashouri < > amirhossein.ashouri at gmail.com> wrote: > >> Thanks Markus. >> >> Having llvm-as to turn the extracted function.bc file to .ll caused an >> error saying: >> >> > llvm-as is for converting bitcode (.bc) to readable LLVM IR (.ll) > llvm-dis is for the other direction > >I'm sorry, this is exactly reversed. Typo :) llvm-dis is for .bc --> .ll llvm-as is for .ll --> .bc> Eli > > >> *llvm-as-3.4: function_bc:1:1: error: expected top-level entity* >> >> *BC! #AI29bEBB2I (some more binary)* >> >> This error is just the same error that I received while using >> llvm-extract on a .c file (not .bc or .ll). >> >> >> Do I have to include other things in the command ? I mean generating a >> function.ll without anything as header, Module ID, etc might be wrong. >> right ? >> >> >> -Amir >> >> On Tue, Oct 21, 2014 at 7:51 PM, Markus Timpl <tima0900 at googlemail.com> >> wrote: >> >>> You can use llvm-dis to turn .bc files into .ll files. >>> Am 22.10.2014 01:44 schrieb "Amir H. Ashouri" < >>> amirhossein.ashouri at gmail.com>: >>> >>> 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 >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> >>>> >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141021/6947ff12/attachment.html>