Add a speculative execution pass
[oota-llvm.git] / lib / IR / BasicBlock.cpp
index 23ec70529547682ed60dfd3790c1502a84117d86..e6a4585a936a9ba09a6f9f9283f0a77632826ab3 100644 (file)
@@ -238,6 +238,14 @@ BasicBlock *BasicBlock::getUniquePredecessor() {
   return PredBB;
 }
 
+BasicBlock *BasicBlock::getSingleSuccessor() {
+  succ_iterator SI = succ_begin(this), E = succ_end(this);
+  if (SI == E) return nullptr; // no successors
+  BasicBlock *TheSucc = *SI;
+  ++SI;
+  return (SI == E) ? TheSucc : nullptr /* multiple successors */;
+}
+
 BasicBlock *BasicBlock::getUniqueSuccessor() {
   succ_iterator SI = succ_begin(this), E = succ_end(this);
   if (SI == E) return NULL; // No successors