Relax assertion in member value propagation

Change-Id: Ie65d66a345658cf87dec4b6376d985b31f7bce3d
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/membervaluepropagation/R8MemberValuePropagation.java b/src/main/java/com/android/tools/r8/ir/optimize/membervaluepropagation/R8MemberValuePropagation.java
index 64c5ea4..54da041 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/membervaluepropagation/R8MemberValuePropagation.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/membervaluepropagation/R8MemberValuePropagation.java
@@ -295,9 +295,7 @@
       // This is guaranteed to read the static value of the field.
       abstractValue = definition.getStaticValue().toAbstractValue(appView.abstractValueFactory());
       // Verify that the optimization info is consistent with the static value.
-      assert definition.getOptimizationInfo().getAbstractValue().isUnknown()
-          || !definition.hasExplicitStaticValue()
-          || abstractValue.equals(definition.getOptimizationInfo().getAbstractValue());
+      assert verifyStaticFieldValueConsistentWithOptimizationInfo(appView, definition);
     } else {
       // This is guaranteed to read the default value of the field.
       abstractValue = appView.abstractValueFactory().createSingleNumberValue(0);
@@ -346,6 +344,19 @@
     }
   }
 
+  private boolean verifyStaticFieldValueConsistentWithOptimizationInfo(
+      AppView<?> appView, DexEncodedField field) {
+    AbstractValue computedValue = field.getOptimizationInfo().getAbstractValue();
+    AbstractValue staticValue =
+        field.getStaticValue().toAbstractValue(appView.abstractValueFactory());
+    assert computedValue.isUnknown()
+        || !field.hasExplicitStaticValue()
+        || appView
+            .getAbstractValueConstantPropagationJoiner()
+            .lessThanOrEqualTo(staticValue, computedValue, field.getTypeElement(appView));
+    return true;
+  }
+
   @Override
   void rewriteInstancePut(IRCode code, InstructionListIterator iterator, InstancePut current) {
     replaceInstancePutByNullCheckIfNeverRead(code, iterator, current);