[llvm-dev] Is subclass of ScheduleDAGMILive a pre-RA scheduler?

陳韋任 via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 25 16:10:28 PDT 2017

2017-04-26 2:08 GMT+08:00 Matthias Braun <mbraun at apple.com>:
>> On Apr 25, 2017, at 4:37 AM, 陳韋任 <chenwj.cs97g at g2.nctu.edu.tw> wrote:
>> Hi, Matthias.
>> From the class hierarchy, ScheduleDAGMILive is also a ScheduleDAGMI. I
>> am wondering if there will be any problem if
>> we use subclass of ScheduleDAGMILive as post-RA scheduler? The best
>> case is ScheduleDAGMILive just waste time
>> on book-keeping register pressure, but I am not sure if we can still
>> do those book-keeping after RA.
> Not sure why you want to use the variant with extra features that don't help you post-RA, but at least it shouldn't break.

Because I want to take other backends' MI scheduler as a template, it
seems all of them are pre-RA scheduler, so ...

If I want to do pre-RA and post-RA instruction scheduling, I assume I
can use ScheduleDAGMILive for both? Or you would
suggest pre-RA done by ScheduleDAGMILive, and post-RA done by

>> Talk about post-RA scheduler, I see there is another class
>> PostRASchedulerList whose DEBUG_TYPE is post-RA-sched.
>> I am wondering if that means we have two post-RA schedulers in LLVM
>> right now? Any particular difference between those
>> two classes, PostMachineScheduler and PostRASchedulerList?
> PostRASchedulerList is considered deprecated. If you are starting fresh use the PostMachineScheduler.

Is it possible to remove PostRASchedulerList, say, at LLVM 5.0? Or at
least mark it as deprecated somewhere?
For example, at the "The LLVM Target-Independent Code Generator" [1],
or at the header of the code. What do
you think?


[1] http://llvm.org/docs/CodeGenerator.html#selectiondag-scheduling-and-formation-phase


Wei-Ren Chen (陳韋任)
Homepage: https://people.cs.nctu.edu.tw/~chenwj

More information about the llvm-dev mailing list