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

mats petersson via llvm-dev llvm-dev at lists.llvm.org
Tue Mar 22 07:15:30 PDT 2016


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>


More information about the llvm-dev mailing list