Fix test expectation for RedundantConstNumberRemovalTest
For Version < 5 we do not perform this optimization due to an art bug.
Bug: 138917494
Change-Id: I56fb3d33a1c63c2a1c4e3cc5465d5144881c022e
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 f9df2a6..08756f5 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
@@ -13,7 +13,9 @@
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.R8TestRunResult;
import com.android.tools.r8.TestBase;
-import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.ir.code.BasicBlock;
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.Instruction;
@@ -30,15 +32,18 @@
@RunWith(Parameterized.class)
public class RedundantConstNumberRemovalTest extends TestBase {
- private final Backend backend;
+ private final TestParameters parameters;
- @Parameters(name = "Backend: {0}")
- public static Backend[] data() {
- return ToolHelper.getBackends();
+ @Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters()
+ .withCfRuntimes()
+ .withDexRuntimesStartingFromExcluding(Version.V4_4_4)
+ .build();
}
- public RedundantConstNumberRemovalTest(Backend backend) {
- this.backend = backend;
+ public RedundantConstNumberRemovalTest(TestParameters parameters) {
+ this.parameters = parameters;
}
@Test
@@ -48,17 +53,18 @@
"true", "true", "true", "true", "true", "true", "true", "true", "true", "true", "true",
"true", "true", "true", "true", "true");
- if (backend == Backend.CF) {
+ if (parameters.getBackend() == Backend.CF) {
testForJvm().addTestClasspath().run(TestClass.class).assertSuccessWithOutput(expectedOutput);
}
R8TestRunResult result =
- testForR8(backend)
+ testForR8(parameters.getBackend())
.addInnerClasses(RedundantConstNumberRemovalTest.class)
.addKeepClassAndMembersRules(TestClass.class)
.enableInliningAnnotations()
.addOptionsModification(
internalOptions -> internalOptions.enableRedundantConstNumberOptimization = true)
+ .setMinApi(parameters.getRuntime())
.run(TestClass.class)
.assertSuccessWithOutput(expectedOutput);
@@ -77,21 +83,23 @@
private void verifyBooleanCheckTest(MethodSubject methodSubject) {
assertThat(methodSubject, isPresent());
- if (backend == Backend.DEX) {
+ if (parameters.getBackend() == Backend.DEX) {
// Check that the generated code for booleanCheckTest() only has a return instruction.
assertEquals(1, methodSubject.streamInstructions().count());
assertTrue(methodSubject.iterateInstructions().next().isReturn());
} else {
- assert backend == Backend.CF;
+ assert parameters.getBackend() == Backend.CF;
// Check that the generated code for booleanCheckTest() only has return instructions that
// return the argument.
// TODO(christofferqa): CF backend does not share identical prefix of successors.
- IRCode code = methodSubject.buildIR();
- assertTrue(
- Streams.stream(code.instructionIterator())
- .filter(Instruction::isReturn)
- .allMatch(
- instruction -> instruction.asReturn().returnValue().definition.isArgument()));
+ // TODO(mkroghj): Redundant ConstNumber has also been disabled on CF, by
+ // canHaveDalvikIntUsedAsNonIntPrimitiveTypeBug() that checks for CF.
+ // IRCode code = methodSubject.buildIR();
+ // assertTrue(
+ // Streams.stream(code.instructionIterator())
+ // .filter(Instruction::isReturn)
+ // .allMatch(
+ // instruction -> instruction.asReturn().returnValue().definition.isArgument()));
}
}
@@ -99,7 +107,7 @@
assertThat(methodSubject, isPresent());
IRCode code = methodSubject.buildIR();
- if (backend == Backend.DEX) {
+ if (parameters.getBackend() == Backend.DEX) {
// Only a single basic block.
assertEquals(1, code.blocks.size());
// The block only has three instructions.
@@ -121,11 +129,13 @@
// Check that the generated code for intCheckTest() only has return instructions that
// return the argument.
// TODO(christofferqa): CF backend does not share identical prefix of successors.
- assertTrue(
- Streams.stream(code.instructionIterator())
- .filter(Instruction::isReturn)
- .allMatch(
- instruction -> instruction.asReturn().returnValue().definition.isArgument()));
+ // TODO(mkroghj): Redundant ConstNumber has also been disabled on CF, by
+ // canHaveDalvikIntUsedAsNonIntPrimitiveTypeBug() that checks for CF.
+ // assertTrue(
+ // Streams.stream(code.instructionIterator())
+ // .filter(Instruction::isReturn)
+ // .allMatch(
+ // instruction -> instruction.asReturn().returnValue().definition.isArgument()));
}
}