Follow up on null member value propagation

Change-Id: I108a052bea247f3867396427d0e4c1b4aad39a40
diff --git a/src/main/java/com/android/tools/r8/graph/DexValue.java b/src/main/java/com/android/tools/r8/graph/DexValue.java
index 3752054..b569acd 100644
--- a/src/main/java/com/android/tools/r8/graph/DexValue.java
+++ b/src/main/java/com/android/tools/r8/graph/DexValue.java
@@ -1057,6 +1057,14 @@
     public String toString() {
       return "Null";
     }
+
+    @Override
+    public ConstInstruction asConstInstruction(IRCode code, Value dest, InternalOptions options) {
+      if (dest.getTypeLattice().isNullType()) {
+        return new ConstNumber(dest, 0);
+      }
+      return code.createConstNull(dest.getLocalInfo());
+    }
   }
 
   static public class DexValueBoolean extends SimpleDexValue {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
index a676b5d..5647ea3 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
@@ -27,6 +27,7 @@
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.ir.optimize.staticizer.dualcallinline.Candidate;
+import com.android.tools.r8.ir.optimize.staticizer.dualcallinline.DualCallTest;
 import com.android.tools.r8.ir.optimize.staticizer.movetohost.CandidateConflictField;
 import com.android.tools.r8.ir.optimize.staticizer.movetohost.CandidateConflictMethod;
 import com.android.tools.r8.ir.optimize.staticizer.movetohost.CandidateOk;
@@ -45,7 +46,6 @@
 import com.android.tools.r8.ir.optimize.staticizer.trivial.SimpleWithPhi;
 import com.android.tools.r8.ir.optimize.staticizer.trivial.SimpleWithSideEffects;
 import com.android.tools.r8.ir.optimize.staticizer.trivial.TrivialTestClass;
-import com.android.tools.r8.ir.optimize.staticizer.dualcallinline.DualCallTest;
 import com.android.tools.r8.naming.MemberNaming.MethodSignature;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
@@ -204,6 +204,7 @@
         testForR8(parameters.getBackend())
             .addProgramClasses(classes)
             .enableInliningAnnotations()
+            .enableMemberValuePropagationAnnotations()
             .addKeepMainRule(main)
             .noMinification()
             .addKeepRules("-allowaccessmodification")
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/CandidateConflictField.java b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/CandidateConflictField.java
index 82eef8e..295657a 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/CandidateConflictField.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/CandidateConflictField.java
@@ -5,8 +5,11 @@
 package com.android.tools.r8.ir.optimize.staticizer.movetohost;
 
 import com.android.tools.r8.NeverInline;
+import com.android.tools.r8.NeverPropagateValue;
 
 public class CandidateConflictField {
+
+  @NeverPropagateValue
   public static String field;
 
   @NeverInline
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/HostConflictField.java b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/HostConflictField.java
index 7166b81..92655d5 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/HostConflictField.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/movetohost/HostConflictField.java
@@ -4,8 +4,12 @@
 
 package com.android.tools.r8.ir.optimize.staticizer.movetohost;
 
+import com.android.tools.r8.NeverPropagateValue;
+
 public class HostConflictField {
+
   static CandidateConflictField INSTANCE = new CandidateConflictField();
 
+  @NeverPropagateValue
   public String field;
 }