diff options
author | Christudasan Devadasan <christudasan.devadasan@amd.com> | 2025-02-05 11:41:37 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-05 11:41:37 +0530 |
commit | a47c35a699ae29e63cfdffd3679639125219d175 (patch) | |
tree | e785b4dc149e8f16f5ebe296ab05c2d27f4d34c7 /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | b85e71b9f2a961fd54777b5aef43b75d8a836214 (diff) | |
download | llvm-a47c35a699ae29e63cfdffd3679639125219d175.zip llvm-a47c35a699ae29e63cfdffd3679639125219d175.tar.gz llvm-a47c35a699ae29e63cfdffd3679639125219d175.tar.bz2 |
[CodeGen] Move MISched target hooks into TargetMachine (#125700)
The createSIMachineScheduler & createPostMachineScheduler
target hooks are currently placed in the PassConfig interface.
Moving it out to TargetMachine so that both legacy and
the new pass manager can effectively use them.
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineScheduler.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/MachineScheduler.cpp b/llvm/lib/CodeGen/MachineScheduler.cpp index 393530f..da46129 100644 --- a/llvm/lib/CodeGen/MachineScheduler.cpp +++ b/llvm/lib/CodeGen/MachineScheduler.cpp @@ -58,6 +58,7 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/GraphWriter.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Target/TargetMachine.h" #include <algorithm> #include <cassert> #include <cstdint> @@ -392,8 +393,11 @@ ScheduleDAGInstrs *MachineScheduler::createMachineScheduler() { if (Ctor != useDefaultMachineSched) return Ctor(this); + const TargetMachine &TM = + getAnalysis<TargetPassConfig>().getTM<TargetMachine>(); + // Get the default scheduler set by the target for this function. - ScheduleDAGInstrs *Scheduler = PassConfig->createMachineScheduler(this); + ScheduleDAGInstrs *Scheduler = TM.createMachineScheduler(this); if (Scheduler) return Scheduler; @@ -405,8 +409,10 @@ ScheduleDAGInstrs *MachineScheduler::createMachineScheduler() { /// the caller. We don't have a command line option to override the postRA /// scheduler. The Target must configure it. ScheduleDAGInstrs *PostMachineScheduler::createPostMachineScheduler() { + const TargetMachine &TM = + getAnalysis<TargetPassConfig>().getTM<TargetMachine>(); // Get the postRA scheduler set by the target for this function. - ScheduleDAGInstrs *Scheduler = PassConfig->createPostMachineScheduler(this); + ScheduleDAGInstrs *Scheduler = TM.createPostMachineScheduler(this); if (Scheduler) return Scheduler; @@ -446,7 +452,6 @@ bool MachineScheduler::runOnMachineFunction(MachineFunction &mf) { MF = &mf; MLI = &getAnalysis<MachineLoopInfoWrapperPass>().getLI(); MDT = &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree(); - PassConfig = &getAnalysis<TargetPassConfig>(); AA = &getAnalysis<AAResultsWrapperPass>().getAAResults(); LIS = &getAnalysis<LiveIntervalsWrapperPass>().getLIS(); @@ -484,7 +489,6 @@ bool PostMachineScheduler::runOnMachineFunction(MachineFunction &mf) { // Initialize the context of the pass. MF = &mf; MLI = &getAnalysis<MachineLoopInfoWrapperPass>().getLI(); - PassConfig = &getAnalysis<TargetPassConfig>(); AA = &getAnalysis<AAResultsWrapperPass>().getAAResults(); if (VerifyScheduling) |