Rerun move-result removal after assume removal
Bug: 214496607
Change-Id: If4ec5f647117c8fc4fd8a575a86b0b3436e67764
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 c4dba5e..45758d3 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
@@ -1505,6 +1505,9 @@
CodeRewriter.removeAssumeInstructions(appView, code);
timing.end();
assert code.isConsistentSSA();
+
+ // TODO(b/214496607): Remove when dynamic types are safe w.r.t. interface assignment rules.
+ codeRewriter.rewriteMoveResult(code);
}
// Assert that we do not have unremoved non-sense code in the output, e.g., v <- non-null NULL.
diff --git a/src/test/java/com/android/tools/r8/internal/opensourceapps/TiviTest.java b/src/test/java/com/android/tools/r8/internal/opensourceapps/TiviTest.java
index 6b593fd..128f780 100644
--- a/src/test/java/com/android/tools/r8/internal/opensourceapps/TiviTest.java
+++ b/src/test/java/com/android/tools/r8/internal/opensourceapps/TiviTest.java
@@ -58,6 +58,7 @@
testForR8(Backend.CF)
.addProgramFiles(outDirectory.resolve("program.jar"))
.apply(this::configure)
+ .apply(this::configureCf)
.compile();
testForR8(Backend.DEX)
.addProgramFiles(compileResult.writeToZip())
@@ -79,6 +80,7 @@
testForR8Compat(Backend.CF)
.addProgramFiles(outDirectory.resolve("program.jar"))
.apply(this::configure)
+ .apply(this::configureCf)
.compile();
testForR8Compat(Backend.DEX)
.addProgramFiles(compileResult.writeToZip())
@@ -93,7 +95,12 @@
.addKeepRuleFiles(outDirectory.resolve("proguard.config"))
.setMinApi(AndroidApiLevel.M)
.allowDiagnosticMessages()
+ .allowUnnecessaryDontWarnWildcards()
.allowUnusedDontWarnPatterns()
.allowUnusedProguardConfigurationRules();
}
+
+ private void configureCf(R8TestBuilder<?> testBuilder) {
+ testBuilder.addOptionsModification(options -> options.horizontalClassMergerOptions().disable());
+ }
}