Do jump table adjustment before constant island allocation
authorJim Grosbach <grosbach@apple.com>
Wed, 11 Nov 2009 19:04:24 +0000 (19:04 +0000)
committerJim Grosbach <grosbach@apple.com>
Wed, 11 Nov 2009 19:04:24 +0000 (19:04 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86857 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMConstantIslandPass.cpp

index 9ea9c9c128a6732c970c8db38eb9d4087f70e899..73cf414b5c1ec96f4cd0f94e735379b8670dcf9e 100644 (file)
@@ -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