diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/InstanceFieldValueAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/InstanceFieldValueAnalysis.java
index ecc93b7..6c1fe58 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/InstanceFieldValueAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/InstanceFieldValueAnalysis.java
@@ -78,7 +78,7 @@
     if (root.isDefinedByInstructionSatisfying(Instruction::isArgument)) {
       Argument argument = root.definition.asArgument();
       builder.recordInitializationInfo(
-          field, factory.createArgumentInitializationInfo(argument.getIndex()));
+          field, factory.createArgumentInitializationInfo(argument.getArgumentIndex()));
     }
   }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Argument.java b/src/main/java/com/android/tools/r8/ir/code/Argument.java
index 1db2ba6..046af1b 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Argument.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Argument.java
@@ -21,33 +21,26 @@
  */
 public class Argument extends Instruction {
 
-  private final int index;
   private final boolean knownToBeBoolean;
 
-  public Argument(Value outValue, int index, boolean knownToBeBoolean) {
+  public Argument(Value outValue, boolean knownToBeBoolean) {
     super(outValue);
-    this.index = index;
     this.knownToBeBoolean = knownToBeBoolean;
+    outValue.markAsArgument();
   }
 
-  public int getIndex() {
-    assert verifyIndex();
-    return index;
-  }
-
-  private boolean verifyIndex() {
+  public int getArgumentIndex() {
     int index = 0;
     InstructionIterator instructionIterator = getBlock().iterator();
     while (instructionIterator.hasNext()) {
       Instruction instruction = instructionIterator.next();
       assert instruction.isArgument();
       if (instruction == this) {
-        assert index == this.index;
-        return true;
+        break;
       }
       index++;
     }
-    return false;
+    return index;
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
index 584ea2c..f4bb790 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
@@ -621,10 +621,6 @@
     return instructions.isEmpty();
   }
 
-  public int size() {
-    return instructions.size();
-  }
-
   public boolean isReturnBlock() {
     return exit().isReturn();
   }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Value.java b/src/main/java/com/android/tools/r8/ir/code/Value.java
index 5566552..e46aca6 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Value.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Value.java
@@ -226,6 +226,7 @@
   private LiveIntervals liveIntervals;
   private int needsRegister = -1;
   private boolean isThis = false;
+  private boolean isArgument = false;
   private LongInterval valueRange;
   private DebugData debugData;
   protected TypeLatticeElement typeLattice;
@@ -913,8 +914,14 @@
         || typeLattice.nullability().isDefinitelyNotNull();
   }
 
+  public void markAsArgument() {
+    assert !isArgument;
+    assert !isThis;
+    isArgument = true;
+  }
+
   public boolean isArgument() {
-    return isDefinedByInstructionSatisfying(Instruction::isArgument);
+    return isArgument;
   }
 
   public boolean onlyDependsOnArgument() {
@@ -938,6 +945,21 @@
     }
   }
 
+  public int computeArgumentPosition(IRCode code) {
+    assert isArgument;
+    int position = 0;
+    InstructionIterator instructionIterator = code.entryBlock().iterator();
+    while (instructionIterator.hasNext()) {
+      Instruction instruction = instructionIterator.next();
+      assert instruction.isArgument();
+      if (instruction.outValue() == this) {
+        return position;
+      }
+      position++;
+    }
+    throw new Unreachable();
+  }
+
   public boolean knownToBeBoolean() {
     return knownToBeBoolean(null);
   }
@@ -969,7 +991,7 @@
   }
 
   public void markAsThis() {
-    assert isArgument();
+    assert isArgument;
     assert !isThis;
     isThis = true;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index 78b1405..7995fdb 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -914,7 +914,7 @@
   public void addThisArgument(int register, TypeLatticeElement receiverType) {
     DebugLocalInfo local = getOutgoingLocal(register);
     Value value = writeRegister(register, receiverType, ThrowingInfo.NO_THROW, local);
-    addInstruction(new Argument(value, currentBlock.size(), false));
+    addInstruction(new Argument(value, false));
     receiverValue = value;
     value.markAsThis();
   }
@@ -922,13 +922,13 @@
   public void addNonThisArgument(int register, TypeLatticeElement typeLattice) {
       DebugLocalInfo local = getOutgoingLocal(register);
       Value value = writeRegister(register, typeLattice, ThrowingInfo.NO_THROW, local);
-    addNonThisArgument(new Argument(value, currentBlock.size(), false));
+      addNonThisArgument(new Argument(value, false));
   }
 
   public void addBooleanNonThisArgument(int register) {
       DebugLocalInfo local = getOutgoingLocal(register);
       Value value = writeRegister(register, getInt(), ThrowingInfo.NO_THROW, local);
-    addNonThisArgument(new Argument(value, currentBlock.size(), true));
+      addNonThisArgument(new Argument(value, true));
   }
 
   private void addNonThisArgument(Argument argument) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
index f1c5dc9..8370b69 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
@@ -607,11 +607,11 @@
 
     for (Monitor monitor : inlinee.code.<Monitor>instructions(Instruction::isMonitorEnter)) {
       Value monitorEnterValue = monitor.object().getAliasedValue();
-      if (monitorEnterValue.isDefinedByInstructionSatisfying(Instruction::isArgument)) {
+      if (monitorEnterValue.isArgument()) {
         monitorEnterValue =
             invoke
                 .arguments()
-                .get(monitorEnterValue.definition.asArgument().getIndex())
+                .get(monitorEnterValue.computeArgumentPosition(inlinee.code))
                 .getAliasedValue();
       }
       addMonitorEnterValue(
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java b/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
index b5215f6..b9345e9 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
@@ -338,7 +338,10 @@
       if (!aliasedValue.isPhi()) {
         Instruction definition = aliasedValue.definition;
         if (definition.isArgument()) {
-          feedback.methodReturnsArgument(method, definition.asArgument().getIndex());
+          // Find the argument number.
+          int index = aliasedValue.computeArgumentPosition(code);
+          assert index >= 0;
+          feedback.methodReturnsArgument(method, index);
         }
         DexType context = method.method.holder;
         AbstractValue abstractReturnValue = definition.getAbstractValue(appView, context);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java
index 6104883..5d48fa6 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java
@@ -137,7 +137,7 @@
             TypeLatticeElement.fromDexType(
                 app.dexItemFactory.throwableType, Nullability.definitelyNotNull(), appView),
             null);
-    instruction = new Argument(value, 0, false);
+    instruction = new Argument(value, false);
     instruction.setPosition(position);
     block0.add(instruction, metadata);
     instruction = new If(Type.EQ, value);
