Fix undefined value error from shorten live ranges
Bug: b/241636314
Change-Id: I1af99a055108fb6454751169fc6989537d67591d
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index 85802c1..36b96dc 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -2045,23 +2045,6 @@
// Locate the closest dominator block for all user blocks.
DominatorTree dominatorTree = dominatorTreeMemoization.computeIfAbsent();
BasicBlock dominator = dominatorTree.closestDominator(userBlocks);
- // If the closest dominator block is a block that uses the constant for a phi the constant
- // needs to go in the immediate dominator block so that it is available for phi moves.
- for (Phi phi : instruction.outValue().uniquePhiUsers()) {
- if (phi.getBlock() == dominator) {
- if (instruction.outValue().numberOfAllUsers() == 1 &&
- phi.usesValueOneTime(instruction.outValue())) {
- // Out value is used only one time, move the constant directly to the corresponding
- // branch rather than into the dominator to avoid to generate a const on paths which
- // does not required it.
- int predIndex = phi.getOperands().indexOf(instruction.outValue());
- dominator = dominator.getPredecessors().get(predIndex);
- } else {
- dominator = dominatorTree.immediateDominator(dominator);
- }
- break;
- }
- }
if (instruction.instructionTypeCanThrow()) {
if (block.hasCatchHandlers() || dominator.hasCatchHandlers()) {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/ShortenLiveRangesOfInstanceGetWithPhiUserRegressionTest.java b/src/test/java/com/android/tools/r8/ir/optimize/ShortenLiveRangesOfInstanceGetWithPhiUserRegressionTest.java
index be5cb83..20b3e58 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/ShortenLiveRangesOfInstanceGetWithPhiUserRegressionTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/ShortenLiveRangesOfInstanceGetWithPhiUserRegressionTest.java
@@ -7,7 +7,6 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.codeinspector.AssertUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -28,15 +27,12 @@
@Test
public void test() throws Exception {
- AssertUtils.assertFailsCompilationIf(
- parameters.isDexRuntime(),
- () ->
- testForR8(parameters.getBackend())
- .addInnerClasses(getClass())
- .addKeepMainRule(Main.class)
- .setMinApi(parameters.getApiLevel())
- .run(parameters.getRuntime(), Main.class)
- .assertSuccessWithOutputLines("0", "1", "2"));
+ testForR8(parameters.getBackend())
+ .addInnerClasses(getClass())
+ .addKeepMainRule(Main.class)
+ .setMinApi(parameters.getApiLevel())
+ .run(parameters.getRuntime(), Main.class)
+ .assertSuccessWithOutputLines("0", "1", "2");
}
static class Main {