[llvm-dev] Passing llvm option -mem2reg to clang

Kevin Hu via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 21 21:32:28 PDT 2016


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


More information about the llvm-dev mailing list