From 3ecaf1b33940470d5bf554135778ba5a8bce9a79 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Fri, 18 Jul 2008 17:46:41 +0000 Subject: [PATCH] Add some checks that got lost in the shuffle. This fixes 464.h264ref. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53760 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/BasicBlockUtils.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/Transforms/Utils/BasicBlockUtils.cpp b/lib/Transforms/Utils/BasicBlockUtils.cpp index d889422992b..719bc8a34f8 100644 --- a/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -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(PredBB->getTerminator())) return false; succ_iterator SI(succ_begin(PredBB)), SE(succ_end(PredBB)); BasicBlock* OnlySucc = BB;