diff options
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGISel.h | 8 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 29 |
2 files changed, 18 insertions, 19 deletions
diff --git a/include/llvm/CodeGen/SelectionDAGISel.h b/include/llvm/CodeGen/SelectionDAGISel.h index 8fddb54..03d9bf5 100644 --- a/include/llvm/CodeGen/SelectionDAGISel.h +++ b/include/llvm/CodeGen/SelectionDAGISel.h @@ -46,6 +46,7 @@ public: MachineRegisterInfo *RegInfo; SelectionDAG *CurDAG; SelectionDAGBuilder *SDB; + MachineBasicBlock *BB; AliasAnalysis *AA; GCFunctionInfo *GFI; CodeGenOpt::Level OptLevel; @@ -282,14 +283,13 @@ private: void PrepareEHLandingPad(MachineBasicBlock *BB); void SelectAllBasicBlocks(const Function &Fn); - void FinishBasicBlock(MachineBasicBlock *BB); + void FinishBasicBlock(); - void SelectBasicBlock(MachineBasicBlock *BB, - const BasicBlock *LLVMBB, + void SelectBasicBlock(const BasicBlock *LLVMBB, BasicBlock::const_iterator Begin, BasicBlock::const_iterator End, bool &HadTailCall); - void CodeGenAndEmitDAG(MachineBasicBlock *BB); + void CodeGenAndEmitDAG(); void LowerArguments(const BasicBlock *BB); void ShrinkDemandedOps(); diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 144abab..ae39226 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -249,8 +249,7 @@ static void ResetDebugLoc(SelectionDAGBuilder *SDB, FastISel *FastIS) { FastIS->setCurDebugLoc(DebugLoc()); } -void SelectionDAGISel::SelectBasicBlock(MachineBasicBlock *BB, - const BasicBlock *LLVMBB, +void SelectionDAGISel::SelectBasicBlock(const BasicBlock *LLVMBB, BasicBlock::const_iterator Begin, BasicBlock::const_iterator End, bool &HadTailCall) { @@ -287,7 +286,7 @@ void SelectionDAGISel::SelectBasicBlock(MachineBasicBlock *BB, CurDAG->setRoot(SDB->getControlRoot()); // Final step, emit the lowered DAG as machine code. - CodeGenAndEmitDAG(BB); + CodeGenAndEmitDAG(); HadTailCall = SDB->HasTailCall; SDB->clear(); } @@ -474,7 +473,7 @@ void SelectionDAGISel::ComputeLiveOutVRegInfo() { } while (!Worklist.empty()); } -void SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) { +void SelectionDAGISel::CodeGenAndEmitDAG() { std::string GroupName; if (TimePassesIsEnabled) GroupName = "Instruction Selection and Scheduling"; @@ -755,7 +754,7 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) { // Iterate over all basic blocks in the function. for (Function::const_iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) { const BasicBlock *LLVMBB = &*I; - MachineBasicBlock *BB = FuncInfo->MBBMap[LLVMBB]; + BB = FuncInfo->MBBMap[LLVMBB]; BasicBlock::const_iterator const Begin = LLVMBB->begin(); BasicBlock::const_iterator const End = LLVMBB->end(); @@ -791,7 +790,7 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) { // beginning FastISel on the entry block. if (LLVMBB == &Fn.getEntryBlock()) { CurDAG->setRoot(SDB->getControlRoot()); - CodeGenAndEmitDAG(BB); + CodeGenAndEmitDAG(); SDB->clear(); } FastIS->startNewBlock(BB); @@ -839,7 +838,7 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) { } bool HadTailCall = false; - SelectBasicBlock(BB, LLVMBB, BI, llvm::next(BI), HadTailCall); + SelectBasicBlock(LLVMBB, BI, llvm::next(BI), HadTailCall); // If the call was emitted as a tail call, we're done with the block. if (HadTailCall) { @@ -875,17 +874,17 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) { // block. if (BI != End) { bool HadTailCall; - SelectBasicBlock(BB, LLVMBB, BI, End, HadTailCall); + SelectBasicBlock(LLVMBB, BI, End, HadTailCall); } - FinishBasicBlock(BB); + FinishBasicBlock(); } delete FastIS; } void -SelectionDAGISel::FinishBasicBlock(MachineBasicBlock *BB) { +SelectionDAGISel::FinishBasicBlock() { DEBUG(dbgs() << "Target-post-processed machine code:\n"); DEBUG(BB->dump()); @@ -924,7 +923,7 @@ SelectionDAGISel::FinishBasicBlock(MachineBasicBlock *BB) { // Emit the code SDB->visitBitTestHeader(SDB->BitTestCases[i], BB); CurDAG->setRoot(SDB->getRoot()); - CodeGenAndEmitDAG(BB); + CodeGenAndEmitDAG(); SDB->clear(); } @@ -945,7 +944,7 @@ SelectionDAGISel::FinishBasicBlock(MachineBasicBlock *BB) { CurDAG->setRoot(SDB->getRoot()); - CodeGenAndEmitDAG(BB); + CodeGenAndEmitDAG(); SDB->clear(); } @@ -992,7 +991,7 @@ SelectionDAGISel::FinishBasicBlock(MachineBasicBlock *BB) { SDB->visitJumpTableHeader(SDB->JTCases[i].second, SDB->JTCases[i].first, BB); CurDAG->setRoot(SDB->getRoot()); - CodeGenAndEmitDAG(BB); + CodeGenAndEmitDAG(); SDB->clear(); } @@ -1001,7 +1000,7 @@ SelectionDAGISel::FinishBasicBlock(MachineBasicBlock *BB) { // Emit the code SDB->visitJumpTable(SDB->JTCases[i].second); CurDAG->setRoot(SDB->getRoot()); - CodeGenAndEmitDAG(BB); + CodeGenAndEmitDAG(); SDB->clear(); // Update PHI Nodes @@ -1049,7 +1048,7 @@ SelectionDAGISel::FinishBasicBlock(MachineBasicBlock *BB) { // Emit the code SDB->visitSwitchCase(SDB->SwitchCases[i], BB); CurDAG->setRoot(SDB->getRoot()); - CodeGenAndEmitDAG(BB); + CodeGenAndEmitDAG(); // Handle any PHI nodes in successors of this chunk, as if we were coming // from the original BB before switch expansion. Note that PHI nodes can |