Move pass configuration out of pass constructors: PostRAScheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150096 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Andrew Trick
2012-02-08 21:22:53 +00:00
parent 61f1e3db43
commit c7d081b594
4 changed files with 11 additions and 9 deletions

View File

@@ -271,7 +271,7 @@ namespace llvm {
/// createPostRAScheduler - This pass performs post register allocation /// createPostRAScheduler - This pass performs post register allocation
/// scheduling. /// scheduling.
FunctionPass *createPostRAScheduler(CodeGenOpt::Level OptLevel); FunctionPass *createPostRAScheduler();
/// BranchFolding Pass - This pass performs machine code CFG based /// BranchFolding Pass - This pass performs machine code CFG based
/// optimizations to delete branches to branches, eliminate branches to /// optimizations to delete branches to branches, eliminate branches to

View File

@@ -285,7 +285,7 @@ void TargetPassConfig::addMachinePasses() {
// Second pass scheduler. // Second pass scheduler.
if (getOptLevel() != CodeGenOpt::None && !DisablePostRA) { if (getOptLevel() != CodeGenOpt::None && !DisablePostRA) {
PM.add(createPostRAScheduler(getOptLevel())); PM.add(createPostRAScheduler());
printNoVerify("After PostRAScheduler"); printNoVerify("After PostRAScheduler");
} }

View File

@@ -82,16 +82,15 @@ namespace {
AliasAnalysis *AA; AliasAnalysis *AA;
const TargetInstrInfo *TII; const TargetInstrInfo *TII;
RegisterClassInfo RegClassInfo; RegisterClassInfo RegClassInfo;
CodeGenOpt::Level OptLevel;
public: public:
static char ID; static char ID;
PostRAScheduler(CodeGenOpt::Level ol) : PostRAScheduler() : MachineFunctionPass(ID) {}
MachineFunctionPass(ID), OptLevel(ol) {}
void getAnalysisUsage(AnalysisUsage &AU) const { void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG(); AU.setPreservesCFG();
AU.addRequired<AliasAnalysis>(); AU.addRequired<AliasAnalysis>();
AU.addRequired<TargetPassConfig>();
AU.addRequired<MachineDominatorTree>(); AU.addRequired<MachineDominatorTree>();
AU.addPreserved<MachineDominatorTree>(); AU.addPreserved<MachineDominatorTree>();
AU.addRequired<MachineLoopInfo>(); AU.addRequired<MachineLoopInfo>();
@@ -209,6 +208,8 @@ bool PostRAScheduler::runOnMachineFunction(MachineFunction &Fn) {
MachineLoopInfo &MLI = getAnalysis<MachineLoopInfo>(); MachineLoopInfo &MLI = getAnalysis<MachineLoopInfo>();
MachineDominatorTree &MDT = getAnalysis<MachineDominatorTree>(); MachineDominatorTree &MDT = getAnalysis<MachineDominatorTree>();
AliasAnalysis *AA = &getAnalysis<AliasAnalysis>(); AliasAnalysis *AA = &getAnalysis<AliasAnalysis>();
TargetPassConfig *PassConfig = &getAnalysis<TargetPassConfig>();
RegClassInfo.runOnMachineFunction(Fn); RegClassInfo.runOnMachineFunction(Fn);
// Check for explicit enable/disable of post-ra scheduling. // Check for explicit enable/disable of post-ra scheduling.
@@ -222,7 +223,8 @@ bool PostRAScheduler::runOnMachineFunction(MachineFunction &Fn) {
// Check that post-RA scheduling is enabled for this target. // Check that post-RA scheduling is enabled for this target.
// This may upgrade the AntiDepMode. // This may upgrade the AntiDepMode.
const TargetSubtargetInfo &ST = Fn.getTarget().getSubtarget<TargetSubtargetInfo>(); const TargetSubtargetInfo &ST = Fn.getTarget().getSubtarget<TargetSubtargetInfo>();
if (!ST.enablePostRAScheduler(OptLevel, AntiDepMode, CriticalPathRCs)) if (!ST.enablePostRAScheduler(PassConfig->getOptLevel(), AntiDepMode,
CriticalPathRCs))
return false; return false;
} }
@@ -710,6 +712,6 @@ void SchedulePostRATDList::ListScheduleTopDown() {
// Public Constructor Functions // Public Constructor Functions
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
FunctionPass *llvm::createPostRAScheduler(CodeGenOpt::Level OptLevel) { FunctionPass *llvm::createPostRAScheduler() {
return new PostRAScheduler(OptLevel); return new PostRAScheduler();
} }

View File

@@ -353,7 +353,7 @@ bool PTXPassConfig::addCodeGenPasses(MCContext *&OutContext) {
// Second pass scheduler. // Second pass scheduler.
if (getOptLevel() != CodeGenOpt::None) { if (getOptLevel() != CodeGenOpt::None) {
PM.add(createPostRAScheduler(getOptLevel())); PM.add(createPostRAScheduler());
printAndVerify("After PostRAScheduler"); printAndVerify("After PostRAScheduler");
} }