From d576d66d91ad15c59b60f16ea0471db9b6a8fdde Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Wed, 11 Nov 2009 19:04:24 +0000 Subject: [PATCH] Do jump table adjustment before constant island allocation llvm-svn: 86857 --- llvm/lib/Target/ARM/ARMConstantIslandPass.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp index 9ea9c9c128a6..73cf414b5c1e 100644 --- a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp +++ b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp @@ -294,6 +294,11 @@ bool ARMConstantIslands::runOnMachineFunction(MachineFunction &MF) { // sizes of each block, the location of all the water, and finding all of the // constant pool users. InitialFunctionScan(MF, CPEMIs); + + bool MadeChange = false; + if (isThumb2) + MadeChange |= OptimizeThumb2JumpTables(MF); + CPEMIs.clear(); /// Remove dead constant pool entries. @@ -301,7 +306,6 @@ bool ARMConstantIslands::runOnMachineFunction(MachineFunction &MF) { // Iteratively place constant pool entries and fix up branches until there // is no change. - bool MadeChange = false; unsigned NoCPIters = 0, NoBRIters = 0; while (true) { bool CPChange = false; @@ -1476,7 +1480,6 @@ bool ARMConstantIslands::OptimizeThumb2Instructions(MachineFunction &MF) { } MadeChange |= OptimizeThumb2Branches(MF); - MadeChange |= OptimizeThumb2JumpTables(MF); return MadeChange; } @@ -1722,8 +1725,8 @@ AdjustJTTargetBlockForward(MachineBasicBlock *BB, MachineBasicBlock *JTBB) JTBB->addSuccessor(NewBB); // Update internal data structures to account for the newly inserted MBB. - // This is almost the same as UpdateForInsertedWaterBlock, except that - // the Water goes after OrigBB, not NewBB. + // Don't mark the new block as having water following it, as we want the + // blocks following the jump table to be as close together as possible. MF.RenumberBlocks(NewBB); // Insert a size into BBSizes to align it properly with the (newly