Only assert puts to final fields outside initializers when testing

Fixed: 187905573
Change-Id: I791496a3dee9cff1fb7c017b49d06fd88ad4bb58
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index 2067ad6..bf21997 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -49,6 +49,7 @@
 import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Predicate;
+import java.util.function.Supplier;
 
 public class AppView<T extends AppInfo> implements DexDefinitionSupplier, LibraryModeledPredicate {
 
@@ -729,4 +730,8 @@
     assert alreadyLibraryDesugared != null;
     return alreadyLibraryDesugared.contains(clazz.getType());
   }
+
+  public boolean checkForTesting(Supplier<Boolean> test) {
+    return testing().enableTestAssertions ? test.get() : true;
+  }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
index 989c188..7092012 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
@@ -244,8 +244,10 @@
               killNonFinalActiveFields(staticPut);
               ExistingValue value = new ExistingValue(staticPut.value());
               if (isFinal(field)) {
-                assert !field.getDefinition().isFinal()
-                    || method.getDefinition().isClassInitializer();
+                assert appView.checkForTesting(
+                    () ->
+                        !field.getDefinition().isFinal()
+                            || method.getDefinition().isClassInitializer());
                 activeState.putFinalStaticField(reference, value);
               } else {
                 activeState.putNonFinalStaticField(reference, value);