Syed Rafiul Hussain via llvm-dev
2016-Mar-22 01:30 UTC
[llvm-dev] Passing llvm option -mem2reg to clang
I have used the following command for my pass (without -mem2reg): clang -Xclang -load -Xclang MYPASS.so -c ../../tests/test1.c For mem2reg, I tried the following: clang -mllvm -mem2reg -Xclang -load -Xclang MYPASS.so -c ../../tests/test1.c On Mon, Mar 21, 2016 at 9:26 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:> >> On Mar 21, 2016, at 6:23 PM, Syed Rafiul Hussain <rafiul1906 at gmail.com> wrote: >> >> I have my own llvm pass which requires mem2reg. It worked fine with >> opt. However, I was trying to make it work with clang as I needed it >> to run some spec cpu benchmarks. >> >> Is there any way that I can mention mem2reg (PromotePass) pass as a >> pre-requisite in my own pass's implementation? > > How are you inserting your pass in the pipeline setup by clang? > You should be able to insert mem2reg before the same way. > Also mem2reg is ran by clang when optimizations are enabled, depending on what your pass is doing it may be a matter of inserting it at the right place. > > -- > Mehdi > > >> >> >> On Mon, Mar 21, 2016 at 9:01 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: >>> Hi, >>> >>> You can't schedule passes from the command line using clang, only `opt` has this ability (AFAIK). >>> >>> If you tell us what is your use-case, we may be able to point you to an alternative solution. >>> >>> -- >>> Mehdi >>> >>>> On Mar 21, 2016, at 5:52 PM, Syed Rafiul Hussain via llvm-dev <llvm-dev at lists.llvm.org> wrote: >>>> >>>> Hi, >>>> >>>> I was trying to pass llvm option -mem2reg to clang using -mllvm and I >>>> found the following error: >>>> >>>> clang (LLVM option parsing): Unknown command line argument '-mem2reg'. >>>> Try: 'clang (LLVM option parsing) -help' >>>> clang (LLVM option parsing): Did you mean '-debug'? >>>> >>>> I would appreciate if anyone could help me. >>>> >>>> -- >>>> Syed Rafiul Hussain >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> llvm-dev at lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>> >> >> >> >> -- >> Rafi >-- Rafi
Kevin Hu via llvm-dev
2016-Mar-22 04:32 UTC
[llvm-dev] Passing llvm option -mem2reg to clang
Hi,> Is there any way that I can mention mem2reg (PromotePass) pass as a > pre-requisite in my own pass's implementation?I think you can consider overriding the Pass::getAnalysisUsage(AnalysisUsage &) method. Described as follows in manual: http://www.llvm.org/docs/doxygen/html/classllvm_1_1Pass.html#a048082a5be9ae0d8901ea64de59e5c8f In your own pass in method getAnalysisUsage(Analysis &AU), you can add required pass by: AU.addRequired<PassName>(); And get the analysis from the pass: PassName &P = getAnalysis<PassName>(); See: http://www.llvm.org/docs/doxygen/html/classllvm_1_1Pass.html#ab78af013d3a11515403da8517f8f3d4a Remember to include the necessary header files. This is a way of making sure your pass always rely on the other passes you want. BTW I also have a question for the mailing list, is it acceptable to allow an analysis pass to depend on a transformation pass (like -mem2reg pass)? Is this acceptable so long as it doesn't cause loop dependencies? Regards, Kevin On Mon, Mar 21, 2016 at 09:30:32PM -0400, Syed Rafiul Hussain via llvm-dev wrote:> I have used the following command for my pass (without -mem2reg): > > clang -Xclang -load -Xclang MYPASS.so -c ../../tests/test1.c > > > For mem2reg, I tried the following: > > clang -mllvm -mem2reg -Xclang -load -Xclang MYPASS.so -c ../../tests/test1.c > > > > > On Mon, Mar 21, 2016 at 9:26 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: > > > >> On Mar 21, 2016, at 6:23 PM, Syed Rafiul Hussain <rafiul1906 at gmail.com> wrote: > >> > >> I have my own llvm pass which requires mem2reg. It worked fine with > >> opt. However, I was trying to make it work with clang as I needed it > >> to run some spec cpu benchmarks. > >> > >> Is there any way that I can mention mem2reg (PromotePass) pass as a > >> pre-requisite in my own pass's implementation? > > > > How are you inserting your pass in the pipeline setup by clang? > > You should be able to insert mem2reg before the same way. > > Also mem2reg is ran by clang when optimizations are enabled, depending on what your pass is doing it may be a matter of inserting it at the right place. > > > > -- > > Mehdi > > > > > >> > >> > >> On Mon, Mar 21, 2016 at 9:01 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: > >>> Hi, > >>> > >>> You can't schedule passes from the command line using clang, only `opt` has this ability (AFAIK). > >>> > >>> If you tell us what is your use-case, we may be able to point you to an alternative solution. > >>> > >>> -- > >>> Mehdi > >>> > >>>> On Mar 21, 2016, at 5:52 PM, Syed Rafiul Hussain via llvm-dev <llvm-dev at lists.llvm.org> wrote: > >>>> > >>>> Hi, > >>>> > >>>> I was trying to pass llvm option -mem2reg to clang using -mllvm and I > >>>> found the following error: > >>>> > >>>> clang (LLVM option parsing): Unknown command line argument '-mem2reg'. > >>>> Try: 'clang (LLVM option parsing) -help' > >>>> clang (LLVM option parsing): Did you mean '-debug'? > >>>> > >>>> I would appreciate if anyone could help me. > >>>> > >>>> -- > >>>> Syed Rafiul Hussain > >>>> _______________________________________________ > >>>> LLVM Developers mailing list > >>>> llvm-dev at lists.llvm.org > >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >>> > >> > >> > >> > >> -- > >> Rafi > > > > > > -- > Rafi > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
mats petersson via llvm-dev
2016-Mar-22 14:15 UTC
[llvm-dev] Passing llvm option -mem2reg to clang
Unless mem2reg does something other than my understanding of it, I can't see why any pass would "require" that... It is not guaranteed to do anything to any particular piece of code, so relying on it seems very unreliable, I would think. -- Mats On 22 March 2016 at 04:32, Kevin Hu via llvm-dev <llvm-dev at lists.llvm.org> wrote:> Hi, > > > Is there any way that I can mention mem2reg (PromotePass) pass as a > > pre-requisite in my own pass's implementation? > > I think you can consider overriding the > Pass::getAnalysisUsage(AnalysisUsage &) > method. Described as follows in manual: > > > http://www.llvm.org/docs/doxygen/html/classllvm_1_1Pass.html#a048082a5be9ae0d8901ea64de59e5c8f > > In your own pass in method getAnalysisUsage(Analysis &AU), you can add > required > pass by: > > AU.addRequired<PassName>(); > > And get the analysis from the pass: > > PassName &P = getAnalysis<PassName>(); > > See: > > > http://www.llvm.org/docs/doxygen/html/classllvm_1_1Pass.html#ab78af013d3a11515403da8517f8f3d4a > > Remember to include the necessary header files. This is a way of making > sure your > pass always rely on the other passes you want. > > BTW I also have a question for the mailing list, is it acceptable to allow > an analysis > pass to depend on a transformation pass (like -mem2reg pass)? Is this > acceptable so long > as it doesn't cause loop dependencies? > > > Regards, > Kevin > > > On Mon, Mar 21, 2016 at 09:30:32PM -0400, Syed Rafiul Hussain via llvm-dev > wrote: > > I have used the following command for my pass (without -mem2reg): > > > > clang -Xclang -load -Xclang MYPASS.so -c ../../tests/test1.c > > > > > > For mem2reg, I tried the following: > > > > clang -mllvm -mem2reg -Xclang -load -Xclang MYPASS.so -c > ../../tests/test1.c > > > > > > > > > > On Mon, Mar 21, 2016 at 9:26 PM, Mehdi Amini <mehdi.amini at apple.com> > wrote: > > > > > >> On Mar 21, 2016, at 6:23 PM, Syed Rafiul Hussain < > rafiul1906 at gmail.com> wrote: > > >> > > >> I have my own llvm pass which requires mem2reg. It worked fine with > > >> opt. However, I was trying to make it work with clang as I needed it > > >> to run some spec cpu benchmarks. > > >> > > >> Is there any way that I can mention mem2reg (PromotePass) pass as a > > >> pre-requisite in my own pass's implementation? > > > > > > How are you inserting your pass in the pipeline setup by clang? > > > You should be able to insert mem2reg before the same way. > > > Also mem2reg is ran by clang when optimizations are enabled, depending > on what your pass is doing it may be a matter of inserting it at the right > place. > > > > > > -- > > > Mehdi > > > > > > > > >> > > >> > > >> On Mon, Mar 21, 2016 at 9:01 PM, Mehdi Amini <mehdi.amini at apple.com> > wrote: > > >>> Hi, > > >>> > > >>> You can't schedule passes from the command line using clang, only > `opt` has this ability (AFAIK). > > >>> > > >>> If you tell us what is your use-case, we may be able to point you to > an alternative solution. > > >>> > > >>> -- > > >>> Mehdi > > >>> > > >>>> On Mar 21, 2016, at 5:52 PM, Syed Rafiul Hussain via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > >>>> > > >>>> Hi, > > >>>> > > >>>> I was trying to pass llvm option -mem2reg to clang using -mllvm and > I > > >>>> found the following error: > > >>>> > > >>>> clang (LLVM option parsing): Unknown command line argument > '-mem2reg'. > > >>>> Try: 'clang (LLVM option parsing) -help' > > >>>> clang (LLVM option parsing): Did you mean '-debug'? > > >>>> > > >>>> I would appreciate if anyone could help me. > > >>>> > > >>>> -- > > >>>> Syed Rafiul Hussain > > >>>> _______________________________________________ > > >>>> LLVM Developers mailing list > > >>>> llvm-dev at lists.llvm.org > > >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > >>> > > >> > > >> > > >> > > >> -- > > >> Rafi > > > > > > > > > > > -- > > Rafi > > _______________________________________________ > > LLVM Developers mailing list > > llvm-dev at lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160322/e5fc1d7a/attachment.html>