Handle ArrayGet in method optimization info
Fixes: 185493636
Change-Id: I175972cdb7c7dd48b3855a19402d441866ba34ec
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 4959de0..6ee8109 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
@@ -8,6 +8,7 @@
import static com.android.tools.r8.ir.code.Opcodes.ADD;
import static com.android.tools.r8.ir.code.Opcodes.AND;
import static com.android.tools.r8.ir.code.Opcodes.ARGUMENT;
+import static com.android.tools.r8.ir.code.Opcodes.ARRAY_GET;
import static com.android.tools.r8.ir.code.Opcodes.ARRAY_LENGTH;
import static com.android.tools.r8.ir.code.Opcodes.ASSUME;
import static com.android.tools.r8.ir.code.Opcodes.CHECK_CAST;
@@ -471,6 +472,12 @@
}
break;
+ case ARRAY_GET:
+ {
+ builder.setMayHaveOtherSideEffectsThanInstanceFieldAssignments();
+ break;
+ }
+
default:
builder
.markAllFieldsAsRead()
diff --git a/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java b/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java
index 99a757b..a84101e 100644
--- a/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java
@@ -394,12 +394,7 @@
.inspect(
inspector -> {
// Class is removed because the instantiation of the inner class has no side effects.
- // TODO(b/202952541): Should be able to remove class.
- if (kotlinc.is(KOTLINC_1_5_0) && testParameters.isDexRuntime()) {
- checkClassIsKept(inspector, PROPERTY_ACCESS_FOR_INNER_CLASS.getClassName());
- } else {
- checkClassIsRemoved(inspector, PROPERTY_ACCESS_FOR_INNER_CLASS.getClassName());
- }
+ checkClassIsRemoved(inspector, PROPERTY_ACCESS_FOR_INNER_CLASS.getClassName());
});
}