Reland "Disable redundant load elimination in debug mode"
Bug: b/316744331
Bug: b/218282718
Change-Id: I1c4fba711609183130735f8b93d0dbe627dec1c1
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/CodeRewriterPassCollection.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/CodeRewriterPassCollection.java
index 1610454..bb62066 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/CodeRewriterPassCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/CodeRewriterPassCollection.java
@@ -39,7 +39,9 @@
passes.add(new BranchSimplifier(appView));
passes.add(new SplitBranch(appView));
passes.add(new RedundantConstNumberRemover(appView));
- passes.add(new RedundantFieldLoadAndStoreElimination(appView));
+ if (!appView.options().debug) {
+ passes.add(new RedundantFieldLoadAndStoreElimination(appView));
+ }
passes.add(new BinopRewriter(appView));
return new CodeRewriterPassCollection(passes);
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java
index 898bd66..064c4b2 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java
@@ -233,7 +233,7 @@
private final ProgramMethod method;
private final IRCode code;
private final int maxCapacityPerBlock;
- private final boolean release;
+ private final boolean release = true;
// Values that may require type propagation.
private final AffectedValues affectedValues = new AffectedValues();
@@ -254,7 +254,7 @@
this.code = code;
this.maxCapacityPerBlock =
Math.max(MIN_CAPACITY_PER_BLOCK, MAX_CAPACITY / code.blocks.size());
- this.release = !appView.options().debug;
+ assert !appView.options().debug;
}
class ExistingValue implements FieldValue {
diff --git a/src/test/java/com/android/tools/r8/regress/b316744331/Regress316744331Test.java b/src/test/java/com/android/tools/r8/regress/b316744331/Regress316744331Test.java
index e3e6058..2bcf2f7 100644
--- a/src/test/java/com/android/tools/r8/regress/b316744331/Regress316744331Test.java
+++ b/src/test/java/com/android/tools/r8/regress/b316744331/Regress316744331Test.java
@@ -86,8 +86,7 @@
breakpoint(fooMethod, IN_STREAM_IS_NULL_LINE),
breakpoint(fooMethod, NORMAL_EXIT_LINE),
run(),
- // TODO(b/316744331): D8 incorrectly optimizing out the code after the null check.
- checkLine(parameters.isCfRuntime() ? IN_STREAM_IS_NULL_LINE : NORMAL_EXIT_LINE),
+ checkLine(IN_STREAM_IS_NULL_LINE),
run());
}
@@ -105,8 +104,7 @@
breakpoint(fooMethod, OUT_STREAM_IS_NULL_LINE),
breakpoint(fooMethod, NORMAL_EXIT_LINE),
run(),
- // TODO(b/316744331): D8 incorrectly optimizing out the code after the null check.
- checkLine(parameters.isCfRuntime() ? OUT_STREAM_IS_NULL_LINE : NORMAL_EXIT_LINE),
+ checkLine(OUT_STREAM_IS_NULL_LINE),
run());
}
}