Only record effectively final field information for static fields
Change-Id: Ie46d5ed607d338932d3fffe697e821da57b9757c
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/FieldValueAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/FieldValueAnalysis.java
index 9fcba84..7b861b2 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/FieldValueAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/FieldValueAnalysis.java
@@ -278,12 +278,14 @@
// Abstract value.
Value root = value.getAliasedValue();
AbstractValue abstractValue = computeAbstractValue(root);
- feedback.recordFieldHasAbstractValue(
- field,
- appView,
- abstractValue.isUnknown()
- ? appView.abstractValueFactory().createSingleFieldValue(field.field)
- : abstractValue);
+ if (abstractValue.isUnknown()) {
+ if (field.isStatic()) {
+ feedback.recordFieldHasAbstractValue(
+ field, appView, appView.abstractValueFactory().createSingleFieldValue(field.field));
+ }
+ } else {
+ feedback.recordFieldHasAbstractValue(field, appView, abstractValue);
+ }
// Dynamic upper bound type.
TypeLatticeElement fieldType =