Consider phi users of trivial phis for staticized references
Bug: 171642432
Change-Id: Ib1bc1e27aa3c77cde67ef2b8edd6a2a082bdb710
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 {