aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java')
-rw-r--r--src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
index de81dfeff..9a7086453 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
@@ -42,6 +42,7 @@ public class PeepholeOptimizer {
private static void shareIdenticalBlockSuffix(IRCode code, RegisterAllocator allocator) {
Collection<BasicBlock> blocks = code.blocks;
do {
+ int startNumberOfNewBlock = code.getHighestBlockNumber() + 1;
Map<BasicBlock, BasicBlock> newBlocks = new IdentityHashMap<>();
for (BasicBlock block : blocks) {
InstructionEquivalence equivalence = new InstructionEquivalence(allocator);
@@ -79,7 +80,7 @@ public class PeepholeOptimizer {
commonSuffixSize, sharedSuffixSizeExcludingExit(firstPred, pred, allocator));
}
assert commonSuffixSize >= 1;
- int blockNumber = code.blocks.size() + newBlocks.size();
+ int blockNumber = startNumberOfNewBlock + newBlocks.size();
BasicBlock newBlock = createAndInsertBlockForSuffix(
blockNumber, commonSuffixSize, predsWithSameLastInstruction, block);
newBlocks.put(predsWithSameLastInstruction.get(0), newBlock);