diff --git a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
index 06a3b1a..1402421 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
@@ -609,6 +609,7 @@
           }
         }
       }
+      chainedPhis.addAll(phi.uniquePhiUsers());
       if (!chainedPhis.isEmpty()) {
         if (!testAndCollectPhisComposedOfSameMember(visited, chainedPhis, dexMember, trivialPhis)) {
           return false;
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/b171642432/CompanionWithPhisTest.java b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/b171642432/CompanionWithPhisTest.java
index a6948db..a7624e7 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/b171642432/CompanionWithPhisTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/b171642432/CompanionWithPhisTest.java
@@ -4,10 +4,6 @@
 
 package com.android.tools.r8.ir.optimize.staticizer.b171642432;
 
-import static com.android.tools.r8.DiagnosticsMatcher.diagnosticException;
-import static org.junit.Assert.assertThrows;
-
-import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
@@ -43,21 +39,15 @@
 
   @Test
   public void testR8() throws Exception {
-    assertThrows(
-        CompilationFailedException.class,
-        () -> {
-          testForR8(parameters.getBackend())
-              .addProgramClasses(Main.class, CompanionUser.class)
-              .addProgramClassesAndInnerClasses(ClassWithCompanion.class)
-              .setMinApi(parameters.getApiLevel())
-              .enableNeverClassInliningAnnotations()
-              .enableInliningAnnotations()
-              .addKeepMainRule(Main.class)
-              .compileWithExpectedDiagnostics(
-                  diagnostics -> {
-                    diagnostics.assertErrorsMatch(diagnosticException(AssertionError.class));
-                  });
-        });
+    testForR8(parameters.getBackend())
+        .addProgramClasses(Main.class, CompanionUser.class)
+        .addProgramClassesAndInnerClasses(ClassWithCompanion.class)
+        .setMinApi(parameters.getApiLevel())
+        .enableNeverClassInliningAnnotations()
+        .enableInliningAnnotations()
+        .addKeepMainRule(Main.class)
+        .run(parameters.getRuntime(), Main.class)
+        .assertSuccessWithOutputLines(EXPECTED);
   }
 
   public static class Main {
