Remove constant array handling from class initializer defaults opt.
Bug: 150269949
Change-Id: I1c20db405574d0211e2907875e16d2c38c08a6f7
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java b/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
index e769dc9..7272948 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
@@ -30,7 +30,6 @@
import com.android.tools.r8.graph.DexValue.DexValueString;
import com.android.tools.r8.graph.FieldResolutionResult;
import com.android.tools.r8.graph.ProgramMethod;
-import com.android.tools.r8.ir.analysis.ValueMayDependOnEnvironmentAnalysis;
import com.android.tools.r8.ir.analysis.type.TypeElement;
import com.android.tools.r8.ir.code.ArrayPut;
import com.android.tools.r8.ir.code.BasicBlock;
@@ -361,8 +360,6 @@
private Map<DexEncodedField, StaticPut> findFinalFieldPutsWhileCollectingUnnecessaryStaticPuts(
IRCode code, ProgramMethod context, Set<StaticPut> unnecessaryStaticPuts) {
- ValueMayDependOnEnvironmentAnalysis environmentAnalysis =
- new ValueMayDependOnEnvironmentAnalysis(appView, code);
Map<DexEncodedField, StaticPut> finalFieldPuts = Maps.newIdentityHashMap();
Map<DexField, Set<StaticPut>> isWrittenBefore = Maps.newIdentityHashMap();
Set<DexEncodedField> isReadBefore = Sets.newIdentityHashSet();
@@ -471,12 +468,7 @@
// the value of one of the fields in the enclosing class.
if (instruction.isInvoke() && instruction.hasOutValue()) {
Value outValue = instruction.outValue();
- if (outValue.numberOfAllUsers() > 0) {
- if (instruction.isInvokeNewArray()
- && environmentAnalysis.isConstantArrayThroughoutMethod(outValue)) {
- // OK, this value is technically a constant.
- continue;
- }
+ if (outValue.hasNonDebugUsers()) {
return validateFinalFieldPuts(finalFieldPuts, isWrittenBefore);
}
}