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,