Account for phis in setLocalsAtEntry()
Bug: 164162567
Change-Id: I71f1ce70c80dc1d43fb24486b53328bc01613d93
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
index 480b00c..dde5906 100644
--- a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
+++ b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
@@ -472,8 +472,12 @@
? block.getPredecessors().get(0).exceptionalExit().getNumber()
: block.getPredecessors().get(0).exit().getNumber();
for (LocalRange open : openRanges) {
+ Value predecessorValue =
+ open.value.isPhi() && open.value.getBlock() == block
+ ? open.value.asPhi().getOperand(0)
+ : open.value;
int predecessorRegister =
- allocator.getArgumentOrAllocateRegisterForValue(open.value, predecessorExitIndex);
+ allocator.getArgumentOrAllocateRegisterForValue(predecessorValue, predecessorExitIndex);
initialLocals.put(predecessorRegister, open.local);
}
block.setLocalsAtEntry(initialLocals);