Fix incorrect instance-get replacement in class inliner
Fixes: b/309076043
Fixes: b/308763761
Change-Id: I84601cc1195d9b54586b0d908f0f869453e5b850
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
index 256d368..7cd562a 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
@@ -769,7 +769,7 @@
if (instruction.isInstanceGet()) {
if (instruction.hasUsedOutValue()) {
replaceFieldReadFromStaticGet(
- code, instructionIterator, user.asInstanceGet(), affectedValues);
+ code, instructionIterator, instruction.asInstanceGet(), affectedValues);
} else {
instructionIterator.removeOrReplaceByDebugLocalRead();
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetMultipleFieldsTest.java b/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetMultipleFieldsTest.java
index cefae52..4217318 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetMultipleFieldsTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetMultipleFieldsTest.java
@@ -43,8 +43,7 @@
assertThat(inspector.clazz(DataImpl.class), isAbsent());
})
.run(parameters.getRuntime(), Main.class)
- // TODO(b/309076043): Should succeed with "1", "2", "3", "4".
- .assertSuccessWithOutputLines("1", "1", "3", "3");
+ .assertSuccessWithOutputLines("1", "2", "3", "4");
}
static class Main {