From ca215e7804ca5d85e19e31850c3ba3d155624e89 Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Mon, 16 Nov 2009 17:10:56 +0000 Subject: [PATCH] Analyze has to be before checking the condition, obviously. Properly construct an iterator for prior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88917 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMConstantIslandPass.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/Target/ARM/ARMConstantIslandPass.cpp b/lib/Target/ARM/ARMConstantIslandPass.cpp index 8279888dfac..4925a20455c 100644 --- a/lib/Target/ARM/ARMConstantIslandPass.cpp +++ b/lib/Target/ARM/ARMConstantIslandPass.cpp @@ -1772,13 +1772,15 @@ AdjustJTTargetBlockForward(MachineBasicBlock *BB, MachineBasicBlock *JTBB) int Size = BBSizes[BBI]; MachineBasicBlock *TBB = 0, *FBB = 0; SmallVector Cond; - // If the block is small and ends in an unconditional branch, move it. - if (Size < 50 && Cond.empty()) { - // If the block terminator isn't analyzable, don't try to move the block - if (TII->AnalyzeBranch(*BB, TBB, FBB, Cond)) - return NULL; - MachineFunction::iterator OldPrior = prior(BB); + // If the block terminator isn't analyzable, don't try to move the block + if (TII->AnalyzeBranch(*BB, TBB, FBB, Cond)) + return NULL; + + // If the block is small and ends in an unconditional branch, move it. + if (Size < 50 && Cond.empty() && BB != MF.begin()) { + MachineFunction::iterator BBi = BB; + MachineFunction::iterator OldPrior = prior(BBi); BB->moveAfter(JTBB); OldPrior->updateTerminator(); BB->updateTerminator();