[llvm-dev] Need help with changes to 'ScheduleDAGInstrs' on the v3.8 branch

Matthias Braun via llvm-dev llvm-dev at lists.llvm.org
Sun Jan 17 17:31:41 PST 2016


> On Jan 17, 2016, at 3:27 AM, Martin J. O'Riordan via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> I am stuck trying to adapt my out-of-target implementation to build on SVN
> head (actually the v3.8 branch, rev #257626).  This is currently working on
> the v3.7.1 sources, but the changes to 'llvm::ScheduleDAGInstrs' have me
> stumped as to how to revise my implementation to track the changes to this
> class.
> 
> Our 'SHAVEAsmScheduler' derives from 'ScheduleDAGInstrs' and uses both the
> 'IsPostRA' and 'LiveIntervals' that were in 'ScheduleDAGInstrs', but which
> have now been removed.
Simple: Just add a LiveIntervals field to your derived class (just initialize it with the reference you previously used when calling the ScheduleDAGInstrs constructor). For IsPostRA you probably know yourself whether your pass runs before or after register allocation and can replace all references to it with true or false, if it can do both then add another member to your derived class.

> Are there any guidelines as to how implementations such as ours which are
> still using a legacy scheduling model should be migrated to whatever the
> preferred scheduling model is?  I expect that this code was originally
> written a long time ago, probably based on LLVM v2.9 or v3.0 in 2011, and
> LLVM would have had a significantly different architecture then.
The preferred way is the TargetSchedModel (SchedMachineModel in the tablegen files).
The previously used itineraries are still available though.

- Matthias



More information about the llvm-dev mailing list