Handle assume users in enum values analysis
Fixes: 184818685
Change-Id: Ia1d6f21b388234af66c94546621786527c678c5a
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java
index 13d03d5..ae6d517 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java
@@ -5,6 +5,7 @@
package com.android.tools.r8.ir.analysis.fieldvalueanalysis;
import static com.android.tools.r8.ir.code.Opcodes.ARRAY_PUT;
+import static com.android.tools.r8.ir.code.Opcodes.ASSUME;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_DIRECT;
import static com.android.tools.r8.ir.code.Opcodes.STATIC_PUT;
@@ -273,7 +274,7 @@
ObjectState[] valuesState = new ObjectState[valuesSize];
DexEncodedField valuesField = null;
- for (Instruction user : value.uniqueUsers()) {
+ for (Instruction user : value.aliasedUsers()) {
switch (user.opcode()) {
case ARRAY_PUT:
ArrayPut arrayPut = user.asArrayPut();
@@ -301,6 +302,12 @@
valuesState[index] = objectState;
break;
+ case ASSUME:
+ if (user.outValue().hasPhiUsers()) {
+ return null;
+ }
+ break;
+
case STATIC_PUT:
DexEncodedField field =
context.getHolder().lookupStaticField(user.asStaticPut().getField());