Abdul Wahid Memon
2012-Jun-07 20:39 UTC
[LLVMdev] How to use LLVM optimizations with clang
Thanks alot Chad for quick response. Does this means that, we can not use LLVM optimizations except O1, O2, O3, O4 and unroll-loops with clang? One more thing I would like to know that If I want to process multiple modules with opt at the same time like opt -adce *.bc then how is it possible with opt in one go, if I process all the bytecode files within Makefile. Thanks. Shahzad On Thu, Jun 7, 2012 at 9:22 PM, Chad Rosier <mcrosier at apple.com> wrote:> > On Jun 7, 2012, at 10:59 AM, Abdul Wahid Memon wrote: > >> Hello everyone >> >> I am trying to use some LLVM optimizations like -die or -adce. Is it >> possible to use them along clang? >> >> Or is there a way where these optimization can be passed on to "opt" >> tool through clang, if opt is being used by clang behind the scenes? >> > > No, opt only works on llvm IR/bitcode. You can generate it like this: > clang -c foo.c -emit-llvm -o foo.bc > or > clang -S foo.c -emit-llvm -o foo.ll > > Then you can run the optimization(s): > opt -adce foo.bc -o foo-adce.bc > > Then you can compile using clang > clang -c foo-adce.bc -o foo-adce.o > > Chad > >> Thanks alot >> >> Regards >> >> Shahzad >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
On Jun 7, 2012, at 1:39 PM, Abdul Wahid Memon wrote:> Thanks alot Chad for quick response. Does this means that, we can not > use LLVM optimizations except O1, O2, O3, O4 and unroll-loops with > clang?Try using the -debug-pass=Arguments options to see what passes are being run at each optimization level. E.g., clang -O[0-3] -mllvm -debug-pass=Arguments foo.c.> > One more thing I would like to know that If I want to process multiple > modules with opt at the same time like > > opt -adce *.bcI don't think this will work.> > then how is it possible with opt in one go, if I process all the > bytecode files within Makefile.You should be able to define a rule in the Makefile to compile your bitcode/IR files. Chad> > Thanks. > > Shahzad > > On Thu, Jun 7, 2012 at 9:22 PM, Chad Rosier <mcrosier at apple.com> wrote: >> >> On Jun 7, 2012, at 10:59 AM, Abdul Wahid Memon wrote: >> >>> Hello everyone >>> >>> I am trying to use some LLVM optimizations like -die or -adce. Is it >>> possible to use them along clang? >>> >>> Or is there a way where these optimization can be passed on to "opt" >>> tool through clang, if opt is being used by clang behind the scenes? >>> >> >> No, opt only works on llvm IR/bitcode. You can generate it like this: >> clang -c foo.c -emit-llvm -o foo.bc >> or >> clang -S foo.c -emit-llvm -o foo.ll >> >> Then you can run the optimization(s): >> opt -adce foo.bc -o foo-adce.bc >> >> Then you can compile using clang >> clang -c foo-adce.bc -o foo-adce.o >> >> Chad >> >>> Thanks alot >>> >>> Regards >>> >>> Shahzad >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>
Abdul Wahid Memon
2012-Jun-07 21:04 UTC
[LLVMdev] How to use LLVM optimizations with clang
Hello Duncan Is it possible that we can use LLVM optimization beside O1, O2, O3 along with dragonegg plugin? Regards Shahzad On Thu, Jun 7, 2012 at 10:59 PM, Abdul Wahid Memon <engrwahidmemon at gmail.com> wrote:> Thanks alot Chad for these quick and fine responses. > > Regards > > Abdul > > On Thu, Jun 7, 2012 at 10:57 PM, Chad Rosier <mcrosier at apple.com> wrote: >> >> On Jun 7, 2012, at 1:53 PM, Abdul Wahid Memon wrote: >> >>> Thanks again chad. One more question please. >>> >>> Is it possible that I can use these optimization using dragonegg plugin somehow? >> >> I haven't a clue. Maybe Duncan can answer that? >> >> Chad >> >>> >>> Regards >>> >>> Shahzad >>> >>> On Thu, Jun 7, 2012 at 10:51 PM, Chad Rosier <mcrosier at apple.com> wrote: >>>> >>>> On Jun 7, 2012, at 1:48 PM, Abdul Wahid Memon wrote: >>>> >>>>> On Thu, Jun 7, 2012 at 10:44 PM, Chad Rosier <mcrosier at apple.com> wrote: >>>>>> >>>>>> On Jun 7, 2012, at 1:39 PM, Abdul Wahid Memon wrote: >>>>>> >>>>>>> Thanks alot Chad for quick response. Does this means that, we can not >>>>>>> use LLVM optimizations except O1, O2, O3, O4 and unroll-loops with >>>>>>> clang? >>>>>> >>>>>> Try using the -debug-pass=Arguments options to see what passes are being run at each optimization level. >>>>> Yes, I have seen those optimization but I want to disable all the >>>>> default optimization (-O0) and specify them individually to test their >>>>> effect. >>>> >>>> 1. Generate the bitcode/ir with -O0 >>>> 2. Run opt with the optimization in question. You should be able to specify most any pass with opt. >>>> >>>>>> >>>>>> E.g., >>>>>> clang -O[0-3] -mllvm -debug-pass=Arguments foo.c. >>>>>> >>>>>>> >>>>>>> One more thing I would like to know that If I want to process multiple >>>>>>> modules with opt at the same time like >>>>>>> >>>>>>> opt -adce *.bc >>>>>> >>>>>> I don't think this will work. >>>>>> >>>>> ok. >>>>>>> >>>>>>> then how is it possible with opt in one go, if I process all the >>>>>>> bytecode files within Makefile. >>>>>> >>>>>> You should be able to define a rule in the Makefile to compile your bitcode/IR files. >>>>> ok. I got the point. >>>>> >>>>> Thanks alot >>>>> >>>>> Shahzad >>>>>> >>>>>> Chad >>>>>> >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> Shahzad >>>>>>> >>>>>>> On Thu, Jun 7, 2012 at 9:22 PM, Chad Rosier <mcrosier at apple.com> wrote: >>>>>>>> >>>>>>>> On Jun 7, 2012, at 10:59 AM, Abdul Wahid Memon wrote: >>>>>>>> >>>>>>>>> Hello everyone >>>>>>>>> >>>>>>>>> I am trying to use some LLVM optimizations like -die or -adce. Is it >>>>>>>>> possible to use them along clang? >>>>>>>>> >>>>>>>>> Or is there a way where these optimization can be passed on to "opt" >>>>>>>>> tool through clang, if opt is being used by clang behind the scenes? >>>>>>>>> >>>>>>>> >>>>>>>> No, opt only works on llvm IR/bitcode. You can generate it like this: >>>>>>>> clang -c foo.c -emit-llvm -o foo.bc >>>>>>>> or >>>>>>>> clang -S foo.c -emit-llvm -o foo.ll >>>>>>>> >>>>>>>> Then you can run the optimization(s): >>>>>>>> opt -adce foo.bc -o foo-adce.bc >>>>>>>> >>>>>>>> Then you can compile using clang >>>>>>>> clang -c foo-adce.bc -o foo-adce.o >>>>>>>> >>>>>>>> Chad >>>>>>>> >>>>>>>>> Thanks alot >>>>>>>>> >>>>>>>>> Regards >>>>>>>>> >>>>>>>>> Shahzad >>>>>>>>> _______________________________________________ >>>>>>>>> LLVM Developers mailing list >>>>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>>>>> >>>>>> >>>> >>
Hi Shahzad,> Is it possible that we can use LLVM optimization beside O1, O2, O3 > along with dragonegg plugin?sure, try this: gcc -fplugin=path/dragonegg.so ...other_options_here... -S -o - -fplugin-arg-dragonegg-emit-ir -fplugin-arg-dragonegg-llvm-ir-optimize=0 | opt -pass1 -pass2 ... Here -fplugin-arg-dragonegg-emit-ir tells it to output LLVM IR rather than target assembler. You can also use -flto here. -fplugin-arg-dragonegg-llvm-ir-optimize=0 disables the standard set of LLVM optimizations. In general, if a front-end can produce LLVM IR then you can do this, by outputting the IR and passing it to "opt". Ciao, Duncan.> > Regards > > Shahzad > > On Thu, Jun 7, 2012 at 10:59 PM, Abdul Wahid Memon > <engrwahidmemon at gmail.com> wrote: >> Thanks alot Chad for these quick and fine responses. >> >> Regards >> >> Abdul >> >> On Thu, Jun 7, 2012 at 10:57 PM, Chad Rosier<mcrosier at apple.com> wrote: >>> >>> On Jun 7, 2012, at 1:53 PM, Abdul Wahid Memon wrote: >>> >>>> Thanks again chad. One more question please. >>>> >>>> Is it possible that I can use these optimization using dragonegg plugin somehow? >>> >>> I haven't a clue. Maybe Duncan can answer that? >>> >>> Chad >>> >>>> >>>> Regards >>>> >>>> Shahzad >>>> >>>> On Thu, Jun 7, 2012 at 10:51 PM, Chad Rosier<mcrosier at apple.com> wrote: >>>>> >>>>> On Jun 7, 2012, at 1:48 PM, Abdul Wahid Memon wrote: >>>>> >>>>>> On Thu, Jun 7, 2012 at 10:44 PM, Chad Rosier<mcrosier at apple.com> wrote: >>>>>>> >>>>>>> On Jun 7, 2012, at 1:39 PM, Abdul Wahid Memon wrote: >>>>>>> >>>>>>>> Thanks alot Chad for quick response. Does this means that, we can not >>>>>>>> use LLVM optimizations except O1, O2, O3, O4 and unroll-loops with >>>>>>>> clang? >>>>>>> >>>>>>> Try using the -debug-pass=Arguments options to see what passes are being run at each optimization level. >>>>>> Yes, I have seen those optimization but I want to disable all the >>>>>> default optimization (-O0) and specify them individually to test their >>>>>> effect. >>>>> >>>>> 1. Generate the bitcode/ir with -O0 >>>>> 2. Run opt with the optimization in question. You should be able to specify most any pass with opt. >>>>> >>>>>>> >>>>>>> E.g., >>>>>>> clang -O[0-3] -mllvm -debug-pass=Arguments foo.c. >>>>>>> >>>>>>>> >>>>>>>> One more thing I would like to know that If I want to process multiple >>>>>>>> modules with opt at the same time like >>>>>>>> >>>>>>>> opt -adce *.bc >>>>>>> >>>>>>> I don't think this will work. >>>>>>> >>>>>> ok. >>>>>>>> >>>>>>>> then how is it possible with opt in one go, if I process all the >>>>>>>> bytecode files within Makefile. >>>>>>> >>>>>>> You should be able to define a rule in the Makefile to compile your bitcode/IR files. >>>>>> ok. I got the point. >>>>>> >>>>>> Thanks alot >>>>>> >>>>>> Shahzad >>>>>>> >>>>>>> Chad >>>>>>> >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>>> Shahzad >>>>>>>> >>>>>>>> On Thu, Jun 7, 2012 at 9:22 PM, Chad Rosier<mcrosier at apple.com> wrote: >>>>>>>>> >>>>>>>>> On Jun 7, 2012, at 10:59 AM, Abdul Wahid Memon wrote: >>>>>>>>> >>>>>>>>>> Hello everyone >>>>>>>>>> >>>>>>>>>> I am trying to use some LLVM optimizations like -die or -adce. Is it >>>>>>>>>> possible to use them along clang? >>>>>>>>>> >>>>>>>>>> Or is there a way where these optimization can be passed on to "opt" >>>>>>>>>> tool through clang, if opt is being used by clang behind the scenes? >>>>>>>>>> >>>>>>>>> >>>>>>>>> No, opt only works on llvm IR/bitcode. You can generate it like this: >>>>>>>>> clang -c foo.c -emit-llvm -o foo.bc >>>>>>>>> or >>>>>>>>> clang -S foo.c -emit-llvm -o foo.ll >>>>>>>>> >>>>>>>>> Then you can run the optimization(s): >>>>>>>>> opt -adce foo.bc -o foo-adce.bc >>>>>>>>> >>>>>>>>> Then you can compile using clang >>>>>>>>> clang -c foo-adce.bc -o foo-adce.o >>>>>>>>> >>>>>>>>> Chad >>>>>>>>> >>>>>>>>>> Thanks alot >>>>>>>>>> >>>>>>>>>> Regards >>>>>>>>>> >>>>>>>>>> Shahzad >>>>>>>>>> _______________________________________________ >>>>>>>>>> LLVM Developers mailing list >>>>>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>>>>>> >>>>>>> >>>>> >>>