From ddf4d8ef3afc0334e29351730748cda0ab92f9d0 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. 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(+) (limited to 'lib/Transforms/Utils') diff --git a/lib/Transforms/Utils/BasicBlockUtils.cpp b/lib/Transforms/Utils/BasicBlockUtils.cpp index d889422..719bc8a 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; -- cgit v1.1