From 1468bec06e92fa040bbb7e7443fc0daadffb7234 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Fri, 18 Jul 2008 17:46:41 +0000 Subject: Add some checks that got lost in the shuffle. This fixes 464.h264ref. llvm-svn: 53760 --- llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp') diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp index d889422992b..719bc8a34f8 100644 --- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/llvm/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; -- cgit v1.2.3