Hoist a safety assert from the extraction method into the construction

of the extractor itself.

llvm-svn: 156164
This commit is contained in:
Chandler Carruth 2012-05-04 10:26:45 +00:00
parent 0fde00150d
commit 2f5d0191f7
1 changed files with 13 additions and 9 deletions

View File

@ -67,6 +67,8 @@ static SetVector<BasicBlock *>
buildExtractionBlockSet(ArrayRef<BasicBlock *> BBs) {
SetVector<BasicBlock *> Result;
assert(!BBs.empty());
// Loop over the blocks, adding them to our set-vector, and aborting with an
// empty set if we encounter invalid blocks.
for (ArrayRef<BasicBlock *>::iterator I = BBs.begin(), E = BBs.end();
@ -80,6 +82,17 @@ buildExtractionBlockSet(ArrayRef<BasicBlock *> BBs) {
}
}
#ifndef NDEBUG
for (ArrayRef<BasicBlock *>::iterator I = llvm::next(BBs.begin()),
E = BBs.end();
I != E; ++I)
for (pred_iterator PI = pred_begin(*I), PE = pred_end(*I);
PI != PE; ++PI)
assert(Result.count(*PI) &&
"No blocks in this region may have entries from outside the region"
" except for the first block!");
#endif
return Result;
}
@ -665,15 +678,6 @@ Function *CodeExtractor::extractCodeRegion() {
// block in the region.
BasicBlock *header = *Blocks.begin();
for (SetVector<BasicBlock *>::iterator BI = llvm::next(Blocks.begin()),
BE = Blocks.end();
BI != BE; ++BI)
for (pred_iterator PI = pred_begin(*BI), E = pred_end(*BI);
PI != E; ++PI)
assert(Blocks.count(*PI) &&
"No blocks in this region may have entries from outside the region"
" except for the first block!");
// If we have to split PHI nodes or the entry block, do so now.
severSplitPHINodes(header);