Fix invalid removal of value used in phi

Bug: b/354625681
Change-Id: I8b3ccd82d6261814fad8b2b1d1ab552efb373cb7
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java
index eb90225..c5e7aaa 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java
@@ -110,7 +110,7 @@
                 next.inValues()
                     .forEach(
                         value -> {
-                          if (value.hasSingleUniqueUser()) {
+                          if (value.hasSingleUniqueUser() && !value.hasPhiUsers()) {
                             additionalToRemove.add(value.getDefinition());
                           }
                         });
diff --git a/src/test/java/com/android/tools/r8/regress/B354625681Test.java b/src/test/java/com/android/tools/r8/regress/B354625681Test.java
index ca6025d..338ca7f 100644
--- a/src/test/java/com/android/tools/r8/regress/B354625681Test.java
+++ b/src/test/java/com/android/tools/r8/regress/B354625681Test.java
@@ -6,10 +6,8 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.AndroidApiLevel;
 import com.google.common.collect.ImmutableList;
 import java.util.List;
-import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -39,26 +37,12 @@
 
   @Test
   public void testR8() throws Exception {
-    if (parameters.isCfRuntime()
-        || (parameters.isDexRuntime()
-            && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.N))) {
-      testForR8(parameters.getBackend())
-          .addInnerClasses(getClass())
-          .addKeepMainRule(TestClass.class)
-          .setMinApi(parameters)
-          .run(parameters.getRuntime(), TestClass.class)
-          .assertSuccessWithOutputLines(EXPECTED_OUTPUT);
-    } else {
-      Assert.assertThrows(
-          Throwable.class,
-          () ->
-              testForR8(parameters.getBackend())
-                  .addInnerClasses(getClass())
-                  .addKeepMainRule(TestClass.class)
-                  .setMinApi(parameters)
-                  .run(parameters.getRuntime(), TestClass.class)
-                  .assertSuccessWithOutputLines(EXPECTED_OUTPUT));
-    }
+    testForR8(parameters.getBackend())
+        .addInnerClasses(getClass())
+        .addKeepMainRule(TestClass.class)
+        .setMinApi(parameters)
+        .run(parameters.getRuntime(), TestClass.class)
+        .assertSuccessWithOutputLines(EXPECTED_OUTPUT);
   }
 
   static class TestClass {