[llvm-commits] [llvm] r88805 - /llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp
Jim Grosbach
grosbach at apple.com
Sat Nov 14 12:10:18 PST 2009
Author: grosbach
Date: Sat Nov 14 14:10:18 2009
New Revision: 88805
URL: http://llvm.org/viewvc/llvm-project?rev=88805&view=rev
Log:
Cleanup flow, and only update the jump table we're analyzing when replacing a destination MBB.
Modified:
llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp?rev=88805&r1=88804&r2=88805&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp Sat Nov 14 14:10:18 2009
@@ -1749,7 +1749,7 @@
MachineBasicBlock *NewBB =
AdjustJTTargetBlockForward(MBB, MI->getParent());
if (NewBB)
- MJTI->ReplaceMBBInJumpTables(JTBBs[j], NewBB);
+ MJTI->ReplaceMBBInJumpTable(JTI, JTBBs[j], NewBB);
MadeChange = true;
}
}
@@ -1772,16 +1772,16 @@
int Size = BBSizes[BBI];
MachineBasicBlock *TBB = 0, *FBB = 0;
SmallVector<MachineOperand, 4> Cond;
- // 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()) {
+ // 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);
BB->moveAfter(JTBB);
OldPrior->updateTerminator();
- //BB->updateTerminator();
+ BB->updateTerminator();
++NumJTMoved;
return NULL;
}
@@ -1792,20 +1792,22 @@
MachineFunction::iterator MBBI = JTBB; ++MBBI;
MF.insert(MBBI, NewBB);
+ //MF.splice(MBBI, NewBB, NewBB);
+
// Add an unconditional branch from NewBB to BB.
// There doesn't seem to be meaningful DebugInfo available; this doesn't
// correspond directly to anything in the source.
assert (isThumb2 && "Adjusting for TB[BH] but not in Thumb2?");
BuildMI(NewBB, DebugLoc::getUnknownLoc(), TII->get(ARM::t2B)).addMBB(BB);
+ // Update internal data structures to account for the newly inserted MBB.
+ MF.RenumberBlocks(NewBB);
+
// Update the CFG.
NewBB->addSuccessor(BB);
JTBB->removeSuccessor(BB);
JTBB->addSuccessor(NewBB);
- // Update internal data structures to account for the newly inserted MBB.
- MF.RenumberBlocks();
-
// Insert a size into BBSizes to align it properly with the (newly
// renumbered) block numbers.
BBSizes.insert(BBSizes.begin()+NewBB->getNumber(), 0);
More information about the llvm-commits
mailing list