Add some checks that got lost in the shuffle. This fixes 464.h264ref.
authorOwen Anderson <resistor@mac.com>
Fri, 18 Jul 2008 17:46:41 +0000 (17:46 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 18 Jul 2008 17:46:41 +0000 (17:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53760 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Utils/BasicBlockUtils.cpp

index d889422992b3104a8d302b41210eef33ae7f6162..719bc8a34f8325af7a1bf98304b9b3de082bdfef 100644 (file)
@@ -39,6 +39,10 @@ bool llvm::MergeBlockIntoPredecessor(BasicBlock* BB, Pass* P) {
   
   // Can't merge if there are multiple predecessors.
   if (!PredBB) return false;
+  // Don't break self-loops.
+  if (PredBB == BB) return false;
+  // Don't break invokes.
+  if (isa<InvokeInst>(PredBB->getTerminator())) return false;
   
   succ_iterator SI(succ_begin(PredBB)), SE(succ_end(PredBB));
   BasicBlock* OnlySucc = BB;