Disable redundant const number optimization until benchmark results
We may regress on this optimization so we should just get some
benchmark data to drive any decision.
Bug: 138917494
Change-Id: Ia507680aa48426381e8423b40949d472fb9320c3
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 512d14e..484a529 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -1107,7 +1107,9 @@
codeRewriter.rewriteSwitch(code);
codeRewriter.processMethodsNeverReturningNormally(code);
codeRewriter.simplifyIf(code);
- codeRewriter.redundantConstNumberRemoval(code);
+ if (options.enableRedundantConstNumberOptimization) {
+ codeRewriter.redundantConstNumberRemoval(code);
+ }
if (RedundantFieldLoadElimination.shouldRun(appView, code)) {
new RedundantFieldLoadElimination(appView, code).run();
}
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 6c62f7f..b914026 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -218,6 +218,8 @@
public boolean enableRedundantFieldLoadElimination = true;
public boolean enableValuePropagation = true;
public boolean enableUninstantiatedTypeOptimization = true;
+ // TODO(b/138917494): Disable until we have numbers on potential performance penalties.
+ public boolean enableRedundantConstNumberOptimization = false;
// Number of threads to use while processing the dex files.
public int numberOfThreads = DETERMINISTIC_DEBUGGING ? 1 : ThreadUtils.NOT_SPECIFIED;
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/RedundantConstNumberRemovalTest.java b/src/test/java/com/android/tools/r8/ir/optimize/RedundantConstNumberRemovalTest.java
index a359ff5..f9df2a6 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/RedundantConstNumberRemovalTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/RedundantConstNumberRemovalTest.java
@@ -57,6 +57,8 @@
.addInnerClasses(RedundantConstNumberRemovalTest.class)
.addKeepClassAndMembersRules(TestClass.class)
.enableInliningAnnotations()
+ .addOptionsModification(
+ internalOptions -> internalOptions.enableRedundantConstNumberOptimization = true)
.run(TestClass.class)
.assertSuccessWithOutput(expectedOutput);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/redundantconstnumber/B124152497.java b/src/test/java/com/android/tools/r8/ir/optimize/redundantconstnumber/B124152497.java
index edadeb7..f26a7e3 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/redundantconstnumber/B124152497.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/redundantconstnumber/B124152497.java
@@ -61,6 +61,7 @@
if (forceRedundantConstNumberRemovalOnDalvik) {
assertTrue(isDalvik());
options.testing.forceRedundantConstNumberRemoval = true;
+ options.enableRedundantConstNumberOptimization = true;
}
})
.enableInliningAnnotations()