Track blocks visited in reverse postorder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126377 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Cameron Zwarich 2011-02-24 10:00:13 +00:00
parent e1497b9791
commit a46cd97818
3 changed files with 9 additions and 0 deletions

View File

@ -106,6 +106,10 @@ public:
LiveOutInfo() : NumSignBits(0), KnownOne(1, 0), KnownZero(1, 0) {}
};
/// VisitedBBs - The set of basic blocks visited thus far by instruction
/// selection.
DenseSet<const BasicBlock*> VisitedBBs;
/// PHINodesToUpdate - A list of phi instructions whose operand list will
/// be updated after processing the current basic block.
/// TODO: This isn't per-function state, it's per-basic-block state. But

View File

@ -219,6 +219,7 @@ void FunctionLoweringInfo::clear() {
CatchInfoFound.clear();
#endif
LiveOutRegInfo.clear();
VisitedBBs.clear();
ArgDbgValues.clear();
ByValArgFrameIndexMap.clear();
RegFixups.clear();

View File

@ -831,6 +831,10 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) {
#ifndef NDEBUG
CheckLineNumbers(LLVMBB);
#endif
if (OptLevel != CodeGenOpt::None)
FuncInfo->VisitedBBs.insert(LLVMBB);
FuncInfo->MBB = FuncInfo->MBBMap[LLVMBB];
FuncInfo->InsertPt = FuncInfo->MBB->getFirstNonPHI();