Use highest block number in string switch remover

Change-Id: I8bf0fcd83a45c7a2789c612554cf7832dc222723
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java b/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java
index 41f22a4..2e8bf77 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java
@@ -77,6 +77,8 @@
       BasicBlock block,
       StringSwitch theSwitch,
       Set<BasicBlock> newBlocks) {
+    int nextBlockNumber = code.getHighestBlockNumber() + 1;
+
     BasicBlock fallthroughBlock = theSwitch.fallthroughBlock();
     Map<DexString, BasicBlock> stringToTargetMap = new IdentityHashMap<>();
     theSwitch.forEachCase(stringToTargetMap::put);
@@ -118,7 +120,7 @@
       if (blocksTargetedByMultipleSwitchCases.contains(targetBlock)) {
         // Need an intermediate block to avoid critical edges.
         BasicBlock intermediateBlock =
-            BasicBlock.createGotoBlock(code.blocks.size(), Position.none(), code.metadata());
+            BasicBlock.createGotoBlock(nextBlockNumber++, Position.none(), code.metadata());
         intermediateBlock.link(targetBlock);
         blockIterator.add(intermediateBlock);
         newBlocks.add(intermediateBlock);
@@ -127,7 +129,7 @@
 
       BasicBlock newBlock =
           BasicBlock.createIfBlock(
-              code.blocks.size(),
+              nextBlockNumber++,
               ifInstruction,
               code.metadata(),
               constStringInstruction,