Hoist a safety assert from the extraction method into the construction
authorChandler Carruth <chandlerc@gmail.com>
Fri, 4 May 2012 10:26:45 +0000 (10:26 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 4 May 2012 10:26:45 +0000 (10:26 +0000)
of the extractor itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156164 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Utils/CodeExtractor.cpp

index 50eb8a27e07afdf555c4aa6dbfa2c0fe4ef7e70f..3d08a5dffc5fb3dfb1e31c9c950d49b234a95949 100644 (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);