Assert that we aren't trying to split the critical edge of a landing pad. Doing
authorBill Wendling <isanbard@gmail.com>
Wed, 17 Aug 2011 21:04:05 +0000 (21:04 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 17 Aug 2011 21:04:05 +0000 (21:04 +0000)
so requires more care than this generic algorithm should handle.

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

lib/Transforms/Utils/BreakCriticalEdges.cpp

index 803e431f761c9fe8f71da7fc3c8146ffb32e3061..03770cc1daaa0548b1b8631570fca89377818cad 100644 (file)
@@ -176,6 +176,11 @@ BasicBlock *llvm::SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum,
   BasicBlock *TIBB = TI->getParent();
   BasicBlock *DestBB = TI->getSuccessor(SuccNum);
 
+  // Splitting the critical edge to a landing pad block is non-trivial. Don't do
+  // it in this generic function.
+  assert(!DestBB->isLandingPad() &&
+         "Cannot split critical edge to a landing pad block!");
+
   // Create a new basic block, linking it into the CFG.
   BasicBlock *NewBB = BasicBlock::Create(TI->getContext(),
                       TIBB->getName() + "." + DestBB->getName() + "_crit_edge");