Thank you very much John. With an environment variable I need to take some special care, but it looks like the only way to go. On Sun, Mar 30, 2014 at 11:07 AM, John Criswell <criswell at illinois.edu>wrote:> Dear Rahman, > > I think your best option is to modify the code in libLTO so that it runs > your pass when you want it to run. I believe the file you want to modify > is LTOCodeGenerator.cpp. > > This does mean that passing options to your pass will be difficult or > impossible. However, you can either hard-code the options you need or read > them from an environment variable if there is no easy way to pass options > to the libLTO. > > If you want to go the llc route, then you'll need to modify the llc code > so that it runs your pass instead of opt; sadly, I don't know off-hand > where the code is that you would need to modify (it is either in llc or in > some LLVM library somewhere). The only reason I discourage the llc route > is because it is difficult to get whole-program bitcode files for large > programs (e.g., Apache). > > Regards, > > John Criswell > > > On 3/29/14, 12:47 AM, Rahman Lavaee wrote: > > Hi, > I am finding it difficult to see how I can run an IR instrumentation pass > after "all" IR passes. > I previously used opt to run my pass after linking all the llvm bitcode > files and then ran llc. > I found out that llc runs some other Function passes which depend on the > target. > For example, tail calls are only supported in x86 under some > circumstances. > > Then I tried lto and link time optimization. But I found it difficult to > specify a flag option for my instrumentation pass. > > Is there any way in llvm to run an IR pass after all IR passes? > > > _______________________________________________ > LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140330/41f73ef0/attachment.html>
FWIW you can pass flags to LTO by escaping it with the following when invoking clang: -Wl,--plugin-opt,-my-pass-option Or at least you used to be able to. That said, environment variables can be a good fallback for stubborn build systems that do things like strip unrecognized linker flags. ~Will On Sun, Mar 30, 2014 at 12:47 PM, Rahman Lavaee <rlavaee at cs.rochester.edu> wrote:> Thank you very much John. > With an environment variable I need to take some special care, but it looks > like the only way to go. > > > On Sun, Mar 30, 2014 at 11:07 AM, John Criswell <criswell at illinois.edu> > wrote: >> >> Dear Rahman, >> >> I think your best option is to modify the code in libLTO so that it runs >> your pass when you want it to run. I believe the file you want to modify is >> LTOCodeGenerator.cpp. >> >> This does mean that passing options to your pass will be difficult or >> impossible. However, you can either hard-code the options you need or read >> them from an environment variable if there is no easy way to pass options to >> the libLTO. >> >> If you want to go the llc route, then you'll need to modify the llc code >> so that it runs your pass instead of opt; sadly, I don't know off-hand where >> the code is that you would need to modify (it is either in llc or in some >> LLVM library somewhere). The only reason I discourage the llc route is >> because it is difficult to get whole-program bitcode files for large >> programs (e.g., Apache). >> >> Regards, >> >> John Criswell >> >> >> On 3/29/14, 12:47 AM, Rahman Lavaee wrote: >> >> Hi, >> I am finding it difficult to see how I can run an IR instrumentation pass >> after "all" IR passes. >> I previously used opt to run my pass after linking all the llvm bitcode >> files and then ran llc. >> I found out that llc runs some other Function passes which depend on the >> target. >> For example, tail calls are only supported in x86 under some >> circumstances. >> >> Then I tried lto and link time optimization. But I found it difficult to >> specify a flag option for my instrumentation pass. >> >> Is there any way in llvm to run an IR pass after all IR passes? >> >> >> _______________________________________________ >> 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 >
Dear Will, Thank you, --plugin-opt does not seem to work on my linux system. I have installed gold and configured and made LLVM under gold. On Sun, Mar 30, 2014 at 9:55 PM, Will Dietz <willdtz at gmail.com> wrote:> FWIW you can pass flags to LTO by escaping it with the following when > invoking clang: > > -Wl,--plugin-opt,-my-pass-option > > Or at least you used to be able to. That said, environment variables > can be a good fallback > for stubborn build systems that do things like strip unrecognized linker > flags. > > ~Will > > On Sun, Mar 30, 2014 at 12:47 PM, Rahman Lavaee > <rlavaee at cs.rochester.edu> wrote: > > Thank you very much John. > > With an environment variable I need to take some special care, but it > looks > > like the only way to go. > > > > > > On Sun, Mar 30, 2014 at 11:07 AM, John Criswell <criswell at illinois.edu> > > wrote: > >> > >> Dear Rahman, > >> > >> I think your best option is to modify the code in libLTO so that it runs > >> your pass when you want it to run. I believe the file you want to > modify is > >> LTOCodeGenerator.cpp. > >> > >> This does mean that passing options to your pass will be difficult or > >> impossible. However, you can either hard-code the options you need or > read > >> them from an environment variable if there is no easy way to pass > options to > >> the libLTO. > >> > >> If you want to go the llc route, then you'll need to modify the llc code > >> so that it runs your pass instead of opt; sadly, I don't know off-hand > where > >> the code is that you would need to modify (it is either in llc or in > some > >> LLVM library somewhere). The only reason I discourage the llc route is > >> because it is difficult to get whole-program bitcode files for large > >> programs (e.g., Apache). > >> > >> Regards, > >> > >> John Criswell > >> > >> > >> On 3/29/14, 12:47 AM, Rahman Lavaee wrote: > >> > >> Hi, > >> I am finding it difficult to see how I can run an IR instrumentation > pass > >> after "all" IR passes. > >> I previously used opt to run my pass after linking all the llvm bitcode > >> files and then ran llc. > >> I found out that llc runs some other Function passes which depend on the > >> target. > >> For example, tail calls are only supported in x86 under some > >> circumstances. > >> > >> Then I tried lto and link time optimization. But I found it difficult to > >> specify a flag option for my instrumentation pass. > >> > >> Is there any way in llvm to run an IR pass after all IR passes? > >> > >> > >> _______________________________________________ > >> 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/20140331/96a377b2/attachment.html>