Analyze has to be before checking the condition, obviously. Properly construct an iterator for prior.
llvm-svn: 88917
This commit is contained in:
parent
16917aa19d
commit
47d5e333ff
|
@ -1772,13 +1772,15 @@ AdjustJTTargetBlockForward(MachineBasicBlock *BB, MachineBasicBlock *JTBB)
|
||||||
int Size = BBSizes[BBI];
|
int Size = BBSizes[BBI];
|
||||||
MachineBasicBlock *TBB = 0, *FBB = 0;
|
MachineBasicBlock *TBB = 0, *FBB = 0;
|
||||||
SmallVector<MachineOperand, 4> Cond;
|
SmallVector<MachineOperand, 4> 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);
|
BB->moveAfter(JTBB);
|
||||||
OldPrior->updateTerminator();
|
OldPrior->updateTerminator();
|
||||||
BB->updateTerminator();
|
BB->updateTerminator();
|
||||||
|
|
Loading…
Reference in New Issue