[LIR] Use the SSA value encoding strategy for debug-local references.
Bug: b/225838009
Change-Id: Ied0fca80ed68a45975a84062c10eef15bd3ea9e4
diff --git a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
index 1f89cc6..e7891b0 100644
--- a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
+++ b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
@@ -260,7 +260,8 @@
instruction.setBlock(currentBlock);
int[] debugEndIndices = code.getDebugLocalEnds(index);
if (debugEndIndices != null) {
- for (int debugEndIndex : debugEndIndices) {
+ for (int encodedDebugEndIndex : debugEndIndices) {
+ int debugEndIndex = code.decodeValueIndex(encodedDebugEndIndex, index);
Value debugValue = getValue(debugEndIndex);
debugValue.addDebugLocalEnd(instruction);
}
diff --git a/src/main/java/com/android/tools/r8/lightir/LirBuilder.java b/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
index 926d64f..992e754 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
@@ -189,7 +189,9 @@
int[] indices = new int[size];
Iterator<V> iterator = endValues.iterator();
for (int i = 0; i < size; i++) {
- indices[i] = getValueIndex(iterator.next());
+ int valueIndex = getValueIndex(iterator.next());
+ int encodedValueIndex = ssaValueStrategy.encodeValueIndex(valueIndex, instructionValueIndex);
+ indices[i] = encodedValueIndex;
}
debugLocalEnds.put(instructionValueIndex, indices);
return this;