Usually dependencies are expressed toward *analyses* and not toward other transformations.
It is the responsibility of the pass pipeline building to order transformations.
(hope I haven't misunderstood your question)
--
Mehdi
>
> Is there an easy way to reuse this pass, or should I, in essence, duplicate `Mem2Reg.cpp` in my project?
>
> Cheers,
> - Stan
> _______________________________________________
> LLVM Developers mailing list
> llvm...@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
I am used to specifying dependence on other LLVM passes in the
`getAnalysisUsage(AnalysisUsage &)` method of my pass. However, it doesn't
seem that there is a header file that exposes the `mem2reg` pass - it is
implemented in `Mem2Reg.cpp` as a wrapper.
Is there an easy way to reuse this pass, or should I, in essence, duplicate
`Mem2Reg.cpp` in my project?
Cheers,
- Stan
_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
</quote>
Quoted from:
http://llvm.1065342.n5.nabble.com/llvm-dev-Writing-an-LLVM-Pass-that-depends-on-mem2reg-tp91085.html
_____________________________________
Sent from http://llvm.1065342.n5.nabble.com
> On Feb 11, 2016, at 10:40 AM, via llvm-dev <llvm...@lists.llvm.org> wrote:
>
> Hi,
> I read your post in LLVM forum. I want to use getAnalysisUsage(AnalysisUsage &AU) to get MachineLoopInfo. I have used this on my passes before but, this time I am trying to get this information in ScheduleDAGRRList scheduler class. There is no runonmachinefunction function. Do you know how I can implement this?
Short answer: you can't, unless I am missing something really obvious.
I'm not sure it even makes sense since this is invoke *during instruction selection*. It means that all the machine basic blocks haven't been created yet. SelectionDAG operates on a single basic block only.
You should step back and think about what you're really trying to achieve here.
If you provide more information on what you're trying to do and why you need this, we may be able to better help to find a solution.
--
Mehdi
In any way the selection DAG schedulers are usually not the place where you want to do advanced scheduling. The long term plan for the selection dag schedulers is to make them as simple as a reverse postorder walk on the selection DAG (we are not quite there yet) or not require them at all anymore with the upcoming GlobalISel. Scheduling for machine specifics is done with the MachineScheduler infrastructure, have you looked at implementing a pre-ra or post-ra MachineScheduler instead of creating a new ScheduleDAG scheduler?
- Matthias
> On Feb 11, 2016, at 10:40 AM, via llvm-dev <llvm...@lists.llvm.org> wrote:
>