Cleanup flow, and only update the jump table we're analyzing when replacing a destination MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88805 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/ARM/ARMConstantIslandPass.cpp b/lib/Target/ARM/ARMConstantIslandPass.cpp
index e5ba8ba..bb69064 100644
--- a/lib/Target/ARM/ARMConstantIslandPass.cpp
+++ b/lib/Target/ARM/ARMConstantIslandPass.cpp
@@ -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);