forked from OSchip/llvm-project
ScheduleDAGInstrs: Move LiveIntervals field to ScheduleDAGMI
Now that ScheduleDAGInstrs doesn't need it anymore we can move the field down the class hierarcy to ScheduleDAGMI. llvm-svn: 254759
This commit is contained in:
parent
ef4fa44ab8
commit
b17e8b1c1d
|
@ -228,6 +228,7 @@ public:
|
|||
class ScheduleDAGMI : public ScheduleDAGInstrs {
|
||||
protected:
|
||||
AliasAnalysis *AA;
|
||||
LiveIntervals *LIS;
|
||||
std::unique_ptr<MachineSchedStrategy> SchedImpl;
|
||||
|
||||
/// Topo - A topological ordering for SUnits which permits fast IsReachable
|
||||
|
@ -255,9 +256,10 @@ protected:
|
|||
public:
|
||||
ScheduleDAGMI(MachineSchedContext *C, std::unique_ptr<MachineSchedStrategy> S,
|
||||
bool RemoveKillFlags)
|
||||
: ScheduleDAGInstrs(*C->MF, C->MLI, C->LIS, RemoveKillFlags),
|
||||
AA(C->AA), SchedImpl(std::move(S)), Topo(SUnits, &ExitSU), CurrentTop(),
|
||||
CurrentBottom(), NextClusterPred(nullptr), NextClusterSucc(nullptr) {
|
||||
: ScheduleDAGInstrs(*C->MF, C->MLI, RemoveKillFlags), AA(C->AA),
|
||||
LIS(C->LIS), SchedImpl(std::move(S)), Topo(SUnits, &ExitSU),
|
||||
CurrentTop(), CurrentBottom(), NextClusterPred(nullptr),
|
||||
NextClusterSucc(nullptr) {
|
||||
#ifndef NDEBUG
|
||||
NumInstrsScheduled = 0;
|
||||
#endif
|
||||
|
@ -266,6 +268,9 @@ public:
|
|||
// Provide a vtable anchor
|
||||
~ScheduleDAGMI() override;
|
||||
|
||||
// Returns LiveIntervals instance for use in DAG mutators and such.
|
||||
LiveIntervals *getLIS() const { return LIS; }
|
||||
|
||||
/// Return true if this DAG supports VReg liveness and RegPressure.
|
||||
virtual bool hasVRegLiveness() const { return false; }
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@ namespace llvm {
|
|||
class MachineFrameInfo;
|
||||
class MachineLoopInfo;
|
||||
class MachineDominatorTree;
|
||||
class LiveIntervals;
|
||||
class RegPressureTracker;
|
||||
class PressureDiffs;
|
||||
|
||||
|
@ -92,9 +91,6 @@ namespace llvm {
|
|||
const MachineLoopInfo *MLI;
|
||||
const MachineFrameInfo *MFI;
|
||||
|
||||
/// Live Intervals provides reaching defs in preRA scheduling.
|
||||
LiveIntervals *LIS;
|
||||
|
||||
/// TargetSchedModel provides an interface to the machine model.
|
||||
TargetSchedModel SchedModel;
|
||||
|
||||
|
@ -172,14 +168,10 @@ namespace llvm {
|
|||
public:
|
||||
explicit ScheduleDAGInstrs(MachineFunction &mf,
|
||||
const MachineLoopInfo *mli,
|
||||
LiveIntervals *LIS = nullptr,
|
||||
bool RemoveKillFlags = false);
|
||||
|
||||
~ScheduleDAGInstrs() override {}
|
||||
|
||||
/// \brief Expose LiveIntervals for use in DAG mutators and such.
|
||||
LiveIntervals *getLIS() const { return LIS; }
|
||||
|
||||
/// \brief Get the machine model for instruction scheduling.
|
||||
const TargetSchedModel *getSchedModel() const { return &SchedModel; }
|
||||
|
||||
|
|
|
@ -51,9 +51,8 @@ static cl::opt<bool> UseTBAA("use-tbaa-in-sched-mi", cl::Hidden,
|
|||
|
||||
ScheduleDAGInstrs::ScheduleDAGInstrs(MachineFunction &mf,
|
||||
const MachineLoopInfo *mli,
|
||||
LiveIntervals *LIS,
|
||||
bool RemoveKillFlags)
|
||||
: ScheduleDAG(mf), MLI(mli), MFI(mf.getFrameInfo()), LIS(LIS),
|
||||
: ScheduleDAG(mf), MLI(mli), MFI(mf.getFrameInfo()),
|
||||
RemoveKillFlags(RemoveKillFlags), CanHandleTerminators(false),
|
||||
TrackLaneMasks(false), FirstDbgValue(nullptr) {
|
||||
DbgValues.clear();
|
||||
|
|
Loading…
Reference in New Issue