Move arguments from their original register index
Change-Id: I98c276b2598d891b7a9b89f96265159a42d3c515
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 96b2122..182bb49 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -1165,7 +1165,7 @@
@Override
public int computeSize(DexBuilder builder) {
Move move = getMove();
- int srcRegister = builder.allocatedRegister(move.src(), move.getNumber());
+ int srcRegister = builder.argumentOrAllocateRegister(move.src(), move.getNumber());
int destRegister = builder.allocatedRegister(move.dest(), move.getNumber());
if (srcRegister == destRegister) {
size = 1;
@@ -1183,8 +1183,8 @@
public void addInstructions(DexBuilder builder, List<Instruction> instructions) {
Move move = getMove();
MoveType moveType = MoveType.fromValueType(move.outType());
+ int src = builder.argumentOrAllocateRegister(move.src(), move.getNumber());
int dest = builder.allocatedRegister(move.dest(), move.getNumber());
- int src = builder.allocatedRegister(move.src(), move.getNumber());
Instruction instruction = null;
switch (size) {
case 1: