Reland initial support for member value propagation for instance fields

Bug: 125282093
Change-Id: I60eac8061ef48a274b42b554dc0d81a4a3af2f87
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 f7d3bc0..9fcba84 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
@@ -58,13 +58,13 @@
       OptimizationFeedback feedback,
       DexProgramClass clazz,
       DexEncodedMethod method) {
+    assert clazz != null;
     assert clazz.type == method.method.holder;
     this.appView = appView;
     this.clazz = clazz;
     this.code = code;
     this.feedback = feedback;
     this.method = method;
-    assert this.clazz != null;
   }
 
   public static void run(
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index c233df4..6e83a6f 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -246,8 +246,7 @@
   public boolean enableInitializedClassesInInstanceMethodsAnalysis = true;
   public boolean enableRedundantFieldLoadElimination = true;
   public boolean enableValuePropagation = true;
-  // TODO(b/125282093): Enable member value propagation for instance fields.
-  public boolean enableValuePropagationForInstanceFields = false;
+  public boolean enableValuePropagationForInstanceFields = true;
   public boolean enableUninstantiatedTypeOptimization = true;
   // Currently disabled, see b/146957343.
   public boolean enableUninstantiatedTypeOptimizationForInterfaces = false;
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/InstanceFieldValuePropagationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/InstanceFieldValuePropagationTest.java
index 5b4c540..a74ac5f 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/InstanceFieldValuePropagationTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/InstanceFieldValuePropagationTest.java
@@ -42,12 +42,6 @@
     testForR8(parameters.getBackend())
         .addInnerClasses(InstanceFieldValuePropagationTest.class)
         .addKeepMainRule(TestClass.class)
-        .addOptionsModification(
-            options -> {
-              // TODO(b/125282093): Remove options modification once landed.
-              assert !options.enableValuePropagationForInstanceFields;
-              options.enableValuePropagationForInstanceFields = true;
-            })
         .enableNeverClassInliningAnnotations()
         .enableInliningAnnotations()
         .setMinApi(parameters.getApiLevel())
diff --git a/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java b/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java
index 8443f06..2f9a1ec 100644
--- a/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java
@@ -48,10 +48,6 @@
 
   private void configure(InternalOptions options) {
     options.enableEnumValueOptimization = enableOptimization;
-
-    // TODO(b/125282093): Remove options modification once landed.
-    assert !options.enableValuePropagationForInstanceFields;
-    options.enableValuePropagationForInstanceFields = true;
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/shaking/EffectivelyFinalInstanceFieldsTest.java b/src/test/java/com/android/tools/r8/shaking/EffectivelyFinalInstanceFieldsTest.java
index 8ae759f..66c8152 100644
--- a/src/test/java/com/android/tools/r8/shaking/EffectivelyFinalInstanceFieldsTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/EffectivelyFinalInstanceFieldsTest.java
@@ -51,12 +51,6 @@
     testForR8(parameters.getBackend())
         .addInnerClasses(EffectivelyFinalInstanceFieldsTest.class)
         .addKeepMainRule(MAIN)
-        .addOptionsModification(
-            options -> {
-              // TODO(b/125282093): Remove options modification once landed.
-              assert !options.enableValuePropagationForInstanceFields;
-              options.enableValuePropagationForInstanceFields = true;
-            })
         .enableInliningAnnotations()
         .enableNeverClassInliningAnnotations()
         .enableMergeAnnotations()
diff --git a/src/test/java/com/android/tools/r8/shaking/examples/TreeShaking18Test.java b/src/test/java/com/android/tools/r8/shaking/examples/TreeShaking18Test.java
index 564902a..f28f242 100644
--- a/src/test/java/com/android/tools/r8/shaking/examples/TreeShaking18Test.java
+++ b/src/test/java/com/android/tools/r8/shaking/examples/TreeShaking18Test.java
@@ -40,12 +40,7 @@
         TreeShaking18Test::unusedRemoved,
         null,
         null,
-        ImmutableList.of("src/test/examples/shaking18/keep-rules.txt"),
-        options -> {
-          // TODO(b/125282093): Remove options modification once landed.
-          assert !options.enableValuePropagationForInstanceFields;
-          options.enableValuePropagationForInstanceFields = true;
-        });
+        ImmutableList.of("src/test/examples/shaking18/keep-rules.txt"));
   }
 
   private static void unusedRemoved(CodeInspector inspector) {