DAG: Provide access to Pass instance from SelectionDAG
This allows accessing an analysis pass during lowering. llvm-svn: 309991
This commit is contained in:
parent
250e050a50
commit
a52391f2db
|
@ -211,6 +211,7 @@ class SelectionDAG {
|
|||
const SelectionDAGTargetInfo *TSI = nullptr;
|
||||
const TargetLowering *TLI = nullptr;
|
||||
MachineFunction *MF;
|
||||
Pass *SDAGISelPass = nullptr;
|
||||
LLVMContext *Context;
|
||||
CodeGenOpt::Level OptLevel;
|
||||
|
||||
|
@ -366,13 +367,16 @@ public:
|
|||
~SelectionDAG();
|
||||
|
||||
/// Prepare this SelectionDAG to process code in the given MachineFunction.
|
||||
void init(MachineFunction &NewMF, OptimizationRemarkEmitter &NewORE);
|
||||
void init(MachineFunction &NewMF, OptimizationRemarkEmitter &NewORE,
|
||||
Pass *PassPtr);
|
||||
|
||||
/// Clear state and free memory necessary to make this
|
||||
/// SelectionDAG ready to process a new block.
|
||||
void clear();
|
||||
|
||||
MachineFunction &getMachineFunction() const { return *MF; }
|
||||
const Pass *getPass() const { return SDAGISelPass; }
|
||||
|
||||
const DataLayout &getDataLayout() const { return MF->getDataLayout(); }
|
||||
const TargetMachine &getTarget() const { return TM; }
|
||||
const TargetSubtargetInfo &getSubtarget() const { return MF->getSubtarget(); }
|
||||
|
|
|
@ -892,8 +892,10 @@ SelectionDAG::SelectionDAG(const TargetMachine &tm, CodeGenOpt::Level OL)
|
|||
}
|
||||
|
||||
void SelectionDAG::init(MachineFunction &NewMF,
|
||||
OptimizationRemarkEmitter &NewORE) {
|
||||
OptimizationRemarkEmitter &NewORE,
|
||||
Pass *PassPtr) {
|
||||
MF = &NewMF;
|
||||
SDAGISelPass = PassPtr;
|
||||
ORE = &NewORE;
|
||||
TLI = getSubtarget().getTargetLowering();
|
||||
TSI = getSubtarget().getSelectionDAGInfo();
|
||||
|
|
|
@ -414,7 +414,7 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
|
|||
|
||||
SplitCriticalSideEffectEdges(const_cast<Function &>(Fn), DT, LI);
|
||||
|
||||
CurDAG->init(*MF, *ORE);
|
||||
CurDAG->init(*MF, *ORE, this);
|
||||
FuncInfo->set(Fn, *MF, CurDAG);
|
||||
|
||||
// Now get the optional analyzes if we want to.
|
||||
|
|
Loading…
Reference in New Issue