Remove flag to disable LIR
Bug: b/225838009
Change-Id: Ic32ed5a9651250720af47dba199180b16a8efc83
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index de7a1b5..0e163e2 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1747,18 +1747,9 @@
return simpleInliningInstructionLimit;
}
// Allow 4 instructions when using LIR regardless of backend.
- if (options.testing.useLir) {
- // TODO(b/288226522): We should reevaluate this for size and other inputs as it regresses
- // compared to DEX code with limit 5 for tivi. This is set to 5 to avoid discard errors
- // in chrome. Using 5 also improves size for chrome compared to a lower value.
- return 5;
- }
- // Allow 3 instructions when generating to class files.
- if (options.isGeneratingClassFiles()) {
- return 3;
- }
- // Allow the size of the dex code to be up to 5 bytes.
- assert options.isGeneratingDex();
+ // TODO(b/288226522): We should reevaluate this for size and other inputs as it regresses
+ // compared to DEX code with limit 5 for tivi. This is set to 5 to avoid discard errors
+ // in chrome. Using 5 also improves size for chrome compared to a lower value.
return 5;
}
@@ -2144,19 +2135,9 @@
public static class TestingOptions {
public boolean roundtripThroughLir = false;
- private boolean useLir = System.getProperty("com.android.tools.r8.nolir") == null;
- private boolean convertLir = System.getProperty("com.android.tools.r8.convertlir") == null;
-
- public void enableLir() {
- useLir = true;
- }
-
- public void disableLir() {
- useLir = false;
- }
public boolean canUseLir(AppView<?> appView) {
- return useLir && appView.enableWholeProgramOptimizations();
+ return appView.enableWholeProgramOptimizations();
}
// As part of integrating LIR the compiler is split in three phases: pre, supported, and post.
@@ -2173,7 +2154,7 @@
throws ExecutionException {
assert isPreLirPhase();
currentPhase = LirPhase.SUPPORTED;
- if (!canUseLir(appView) || !convertLir) {
+ if (!canUseLir(appView)) {
return;
}
// Convert code objects to LIR.
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
index 9acb6cf..f2979f2 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
@@ -132,7 +132,6 @@
.run(Paths.get(ToolHelper.THIRD_PARTY_DIR, "examplesAndroidOLegacy"));
test("lambdadesugaring", "lambdadesugaring", "LambdaDesugaring")
- .withOptionConsumer(o -> o.testing.enableLir())
.withMinApiLevel(ToolHelper.getMinApiLevelForDexVmNoHigherThan(AndroidApiLevel.K))
.withBuilderTransformation(
b -> b.addProguardConfiguration(PROGUARD_OPTIONS, Origin.unknown()))
@@ -173,7 +172,6 @@
test("lambdadesugaring", "lambdadesugaring", "LambdaDesugaring")
.withMinApiLevel(AndroidApiLevel.N)
- .withOptionConsumer(opts -> opts.testing.enableLir())
.withBuilderTransformation(
b -> b.addProguardConfiguration(PROGUARD_OPTIONS, Origin.unknown()))
.withDexCheck(inspector -> checkLambdaCount(inspector, 1, "lambdadesugaring"))
diff --git a/src/test/java/com/android/tools/r8/classmerging/vertical/ExceptionTablesTest.java b/src/test/java/com/android/tools/r8/classmerging/vertical/ExceptionTablesTest.java
index f694cd7..1ba7dcf 100644
--- a/src/test/java/com/android/tools/r8/classmerging/vertical/ExceptionTablesTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/vertical/ExceptionTablesTest.java
@@ -44,7 +44,6 @@
.addKeepMainRule(TestClass.class)
.addVerticallyMergedClassesInspector(this::inspectVerticallyMergedClasses)
.setMinApi(parameters)
- .addOptionsModification(o -> o.testing.enableLir())
.compile()
.inspect(this::inspect)
.run(parameters.getRuntime(), TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/dagger/DaggerBasicNotSingletonUsingBindsTest.java b/src/test/java/com/android/tools/r8/dagger/DaggerBasicNotSingletonUsingBindsTest.java
index 173efa1..bffbe9d 100644
--- a/src/test/java/com/android/tools/r8/dagger/DaggerBasicNotSingletonUsingBindsTest.java
+++ b/src/test/java/com/android/tools/r8/dagger/DaggerBasicNotSingletonUsingBindsTest.java
@@ -77,7 +77,6 @@
.addProgramFiles(getProgramFiles(target))
.setMinApi(parameters)
.addKeepMainRule(MAIN_CLASS)
- .addOptionsModification(o -> o.testing.enableLir())
.run(parameters.getRuntime(), MAIN_CLASS)
.inspect(this::inspect)
.assertSuccessWithOutputLines(EXPECTED_OUTPUT);
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java
index 09d3213..df487eb 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java
@@ -89,7 +89,6 @@
.addOptionsModification(
options -> {
// The check for $default$query relies on inlining.
- options.testing.enableLir();
options.inlinerOptions().simpleInliningInstructionLimit = 5;
})
.compile()
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNull2ArgumentTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNull2ArgumentTest.java
index 1130986..ccff4dc 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNull2ArgumentTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNull2ArgumentTest.java
@@ -31,7 +31,6 @@
.addInnerClasses(getClass())
.setMinApi(parameters)
.addKeepMainRule(Main.class)
- .addOptionsModification(options -> options.testing.disableLir())
.run(parameters.getRuntime(), Main.class)
.assertSuccessWithOutputLines("true", "null");
}
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNullArgumentTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNullArgumentTest.java
index 1f0492d..7df511e 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNullArgumentTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxNullArgumentTest.java
@@ -30,7 +30,6 @@
.addInnerClasses(getClass())
.setMinApi(parameters)
.addKeepMainRule(Main.class)
- .addOptionsModification(options -> options.testing.disableLir())
.run(parameters.getRuntime(), Main.class)
.assertFailureWithErrorThatThrows(NullPointerException.class);
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java b/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
index 00e0441..b00cc7e 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
@@ -123,7 +123,6 @@
o.inlinerOptions().enableInlining = inlining;
o.inlinerOptions().enableInliningOfInvokesWithNullableReceivers = false;
o.inlinerOptions().simpleInliningInstructionLimit = 7;
- o.testing.enableLir();
o.testing.horizontallyMergedClassesConsumer = this::fixInliningNullabilityClass;
o.testing.horizontalClassMergingTarget =
(appView, candidates, target) -> {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerTest.java b/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerTest.java
index 483ed33..da23b67 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerTest.java
@@ -310,8 +310,6 @@
.allowAccessModification()
.enableInliningAnnotations()
.addDontObfuscate()
- // Using LIR changes the inlining heuristics so enable it consistently.
- .addOptionsModification(o -> o.testing.enableLir())
.setMinApi(parameters)
.run(parameters.getRuntime(), main)
.assertSuccessWithOutput(javaOutput);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/InlineFunctionalInterfaceMethodImplementedByLambdasTest.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/InlineFunctionalInterfaceMethodImplementedByLambdasTest.java
index ccd59c6..7969f45 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/InlineFunctionalInterfaceMethodImplementedByLambdasTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/InlineFunctionalInterfaceMethodImplementedByLambdasTest.java
@@ -38,7 +38,6 @@
.addKeepMainRule(TestClass.class)
.enableNeverClassInliningAnnotations()
.setMinApi(parameters)
- .addOptionsModification(o -> o.testing.enableLir())
.compile()
.inspect(this::inspect)
.run(parameters.getRuntime(), TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/InliningOptimize.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/InliningOptimize.java
index dd9edd7..55230e8 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/InliningOptimize.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/InliningOptimize.java
@@ -30,7 +30,6 @@
.addKeepRules("-keep,allowoptimization class ** {\n" + "*;\n" + "}")
.addOptionsModification(
options -> {
- options.testing.enableLir();
options.inlinerOptions().simpleInliningInstructionLimit = 5;
})
.compile()
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/FieldReadForWriteTest.java b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/FieldReadForWriteTest.java
index 37e6c57..8de4937 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/FieldReadForWriteTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/FieldReadForWriteTest.java
@@ -39,7 +39,6 @@
HorizontallyMergedClassesInspector::assertNoClassesMerged)
.enableNoHorizontalClassMergingAnnotations()
.setMinApi(parameters)
- .addOptionsModification(o -> o.testing.enableLir())
.run(parameters.getRuntime(), Main.class)
.assertSuccessWithOutputLines("42")
.inspect(inspector -> assertThat(inspector.clazz(anim.class), isAbsent()));
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
index 5c3fe96..e3e4fa2 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
@@ -298,7 +298,6 @@
.allowAccessModification()
.addDontObfuscate()
.addOptionsModification(this::configure)
- .addOptionsModification(o -> o.testing.enableLir())
.setMinApi(parameters)
.run(parameters.getRuntime(), main)
.assertSuccessWithOutput(javaOutput);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/NestedInterfaceMethodTest.java b/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/NestedInterfaceMethodTest.java
index 9626829..83c7f4f 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/NestedInterfaceMethodTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/NestedInterfaceMethodTest.java
@@ -60,7 +60,6 @@
.enableNoVerticalClassMergingAnnotations()
.addOptionsModification(
options -> {
- options.testing.enableLir();
options.enableDevirtualization = false;
options.inlinerOptions().enableInliningOfInvokesWithNullableReceivers = false;
// The checks for I being present rely on not simple inlining.
diff --git a/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java b/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java
index e74dd87..aad5246 100644
--- a/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java
@@ -129,7 +129,6 @@
testBuilder ->
testBuilder
.addKeepRules(keepClassMethod(mainClassName, testMethodSignature))
- .addOptionsModification(o -> o.testing.enableLir())
.addOptionsModification(disableClassInliner))
.inspect(
inspector -> {
diff --git a/src/test/java/com/android/tools/r8/regress/Regress160394262Test.java b/src/test/java/com/android/tools/r8/regress/Regress160394262Test.java
index a39c770..e21af03 100644
--- a/src/test/java/com/android/tools/r8/regress/Regress160394262Test.java
+++ b/src/test/java/com/android/tools/r8/regress/Regress160394262Test.java
@@ -50,7 +50,6 @@
.addKeepMainRule(TestClass.class)
.addInnerClasses(Regress160394262Test.class)
.setMinApi(parameters)
- .addOptionsModification(o -> o.testing.enableLir())
.run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutput(EXPECTED)
.inspect(this::checkJoinerIsClassInlined);
diff --git a/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java b/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java
index 97045ca..7b1c258 100644
--- a/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/enums/EnumOptimizationTest.java
@@ -161,7 +161,6 @@
.addOptionsModification(this::configure)
.addOptionsModification(
o -> {
- o.testing.enableLir();
// Not inlining toString depends on simple inlining limit.
o.inlinerOptions().simpleInliningInstructionLimit = 3;
})
diff --git a/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java b/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java
index df9580c..c084e8a 100644
--- a/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java
+++ b/src/test/java/com/android/tools/r8/shaking/annotations/b137392797/B137392797.java
@@ -88,7 +88,6 @@
options -> {
// The default limit for LIR is 2 at time of writing.
// The constructor inlining check needs a limit of 4 to trigger.
- options.testing.enableLir();
options.inlinerOptions().simpleInliningInstructionLimit = 4;
})
.compile()