summaryrefslogtreecommitdiff
path: root/test/463-checker-boolean-simplifier/src/Main.java
diff options
context:
space:
mode:
author Tamas Kenez <tamaskenez@google.com> 2018-05-24 15:32:36 +0200
committer Tamas Kenez <tamaskenez@google.com> 2018-05-25 11:07:13 +0000
commitb4258999448ce4503fac317ba843af25a00ab10a (patch)
tree2f543a4a8b63f04f6c9838728e29e8bb03879e1a /test/463-checker-boolean-simplifier/src/Main.java
parent0b3e830d145e2414a06e64a711c60bb015f31185 (diff)
ART-tests: Remove DX-dependency from 463-checker-boolean-simplifier.
This test was failing with D8 because some test cases relied on DX-specific code patterns. This CL moves those test cases to smali and enables D8. Bug: 65168732 Test: art/test.py -r --host -t 463 Change-Id: I7472593eea0bd0889319f19f9b65246856ceb15f
Diffstat (limited to 'test/463-checker-boolean-simplifier/src/Main.java')
-rw-r--r--test/463-checker-boolean-simplifier/src/Main.java174
1 files changed, 21 insertions, 153 deletions
diff --git a/test/463-checker-boolean-simplifier/src/Main.java b/test/463-checker-boolean-simplifier/src/Main.java
index d1d02cdfee..2c759ed6f9 100644
--- a/test/463-checker-boolean-simplifier/src/Main.java
+++ b/test/463-checker-boolean-simplifier/src/Main.java
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+import java.lang.reflect.Method;
+
public class Main {
// Note #1: `javac` flips the conditions of If statements.
@@ -33,44 +35,6 @@ public class Main {
}
/*
- * Elementary test negating a boolean. Verifies that blocks are merged and
- * empty branches removed.
- */
-
- /// CHECK-START: boolean Main.BooleanNot(boolean) select_generator (before)
- /// CHECK-DAG: <<Param:z\d+>> ParameterValue
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: If [<<Param>>]
- /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>]
- /// CHECK-DAG: Return [<<Phi>>]
-
- /// CHECK-START: boolean Main.BooleanNot(boolean) select_generator (before)
- /// CHECK: Goto
- /// CHECK: Goto
- /// CHECK: Goto
- /// CHECK-NOT: Goto
-
- /// CHECK-START: boolean Main.BooleanNot(boolean) select_generator (after)
- /// CHECK-DAG: <<Param:z\d+>> ParameterValue
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: <<NotParam:i\d+>> Select [<<Const1>>,<<Const0>>,<<Param>>]
- /// CHECK-DAG: Return [<<NotParam>>]
-
- /// CHECK-START: boolean Main.BooleanNot(boolean) select_generator (after)
- /// CHECK-NOT: If
- /// CHECK-NOT: Phi
-
- /// CHECK-START: boolean Main.BooleanNot(boolean) select_generator (after)
- /// CHECK: Goto
- /// CHECK-NOT: Goto
-
- public static boolean BooleanNot(boolean x) {
- return !x;
- }
-
- /*
* Program which only delegates the condition, i.e. returns 1 when True
* and 0 when False.
*/
@@ -126,72 +90,6 @@ public class Main {
return (x < y) ? true : false;
}
- /*
- * Program which further uses negated conditions.
- * Note that Phis are discovered retrospectively.
- */
-
- /// CHECK-START: boolean Main.ValuesOrdered(int, int, int) select_generator (before)
- /// CHECK-DAG: <<ParamX:i\d+>> ParameterValue
- /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue
- /// CHECK-DAG: <<ParamZ:i\d+>> ParameterValue
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: <<CondXY:z\d+>> GreaterThan [<<ParamX>>,<<ParamY>>]
- /// CHECK-DAG: If [<<CondXY>>]
- /// CHECK-DAG: <<CondYZ:z\d+>> GreaterThan [<<ParamY>>,<<ParamZ>>]
- /// CHECK-DAG: If [<<CondYZ>>]
- /// CHECK-DAG: <<CondXYZ:z\d+>> NotEqual [<<PhiXY:i\d+>>,<<PhiYZ:i\d+>>]
- /// CHECK-DAG: If [<<CondXYZ>>]
- /// CHECK-DAG: Return [<<PhiXYZ:i\d+>>]
- /// CHECK-DAG: <<PhiXY>> Phi [<<Const1>>,<<Const0>>]
- /// CHECK-DAG: <<PhiYZ>> Phi [<<Const1>>,<<Const0>>]
- /// CHECK-DAG: <<PhiXYZ>> Phi [<<Const1>>,<<Const0>>]
-
- /// CHECK-START: boolean Main.ValuesOrdered(int, int, int) select_generator (after)
- /// CHECK-DAG: <<ParamX:i\d+>> ParameterValue
- /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue
- /// CHECK-DAG: <<ParamZ:i\d+>> ParameterValue
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: <<CmpXY:z\d+>> GreaterThan [<<ParamX>>,<<ParamY>>]
- /// CHECK-DAG: <<SelXY:i\d+>> Select [<<Const1>>,<<Const0>>,<<CmpXY>>]
- /// CHECK-DAG: <<CmpYZ:z\d+>> GreaterThan [<<ParamY>>,<<ParamZ>>]
- /// CHECK-DAG: <<SelYZ:i\d+>> Select [<<Const1>>,<<Const0>>,<<CmpYZ>>]
- /// CHECK-DAG: <<CmpXYZ:z\d+>> NotEqual [<<SelXY>>,<<SelYZ>>]
- /// CHECK-DAG: <<SelXYZ:i\d+>> Select [<<Const1>>,<<Const0>>,<<CmpXYZ>>]
- /// CHECK-DAG: Return [<<SelXYZ>>]
-
- public static boolean ValuesOrdered(int x, int y, int z) {
- return (x <= y) == (y <= z);
- }
-
- /// CHECK-START: int Main.NegatedCondition(boolean) select_generator (before)
- /// CHECK-DAG: <<Param:z\d+>> ParameterValue
- /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42
- /// CHECK-DAG: <<Const43:i\d+>> IntConstant 43
- /// CHECK-DAG: If [<<Param>>]
- /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const42>>,<<Const43>>]
- /// CHECK-DAG: Return [<<Phi>>]
-
- /// CHECK-START: int Main.NegatedCondition(boolean) select_generator (after)
- /// CHECK-DAG: <<Param:z\d+>> ParameterValue
- /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42
- /// CHECK-DAG: <<Const43:i\d+>> IntConstant 43
- /// CHECK-DAG: <<Select:i\d+>> Select [<<Const43>>,<<Const42>>,<<Param>>]
- /// CHECK-DAG: Return [<<Select>>]
-
- /// CHECK-START: int Main.NegatedCondition(boolean) select_generator (after)
- /// CHECK-NOT: BooleanNot
-
- public static int NegatedCondition(boolean x) {
- if (x != false) {
- return 42;
- } else {
- return 43;
- }
- }
-
/// CHECK-START: int Main.SimpleTrueBlock(boolean, int) select_generator (after)
/// CHECK-DAG: <<ParamX:z\d+>> ParameterValue
/// CHECK-DAG: <<ParamY:i\d+>> ParameterValue
@@ -262,43 +160,6 @@ public class Main {
}
}
- /// CHECK-START: int Main.MultiplePhis() select_generator (before)
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13
- /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42
- /// CHECK-DAG: <<PhiX:i\d+>> Phi [<<Const0>>,<<Const13>>,<<Const42>>]
- /// CHECK-DAG: <<PhiY:i\d+>> Phi [<<Const1>>,<<Add:i\d+>>,<<Add>>]
- /// CHECK-DAG: <<Add>> Add [<<PhiY>>,<<Const1>>]
- /// CHECK-DAG: <<Cond:z\d+>> LessThanOrEqual [<<Add>>,<<Const1>>]
- /// CHECK-DAG: If [<<Cond>>]
- /// CHECK-DAG: Return [<<PhiX>>]
-
- /// CHECK-START: int Main.MultiplePhis() select_generator (after)
- /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0
- /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1
- /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13
- /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42
- /// CHECK-DAG: <<PhiX:i\d+>> Phi [<<Const0>>,<<Select:i\d+>>]
- /// CHECK-DAG: <<PhiY:i\d+>> Phi [<<Const1>>,<<Add:i\d+>>]
- /// CHECK-DAG: <<Add>> Add [<<PhiY>>,<<Const1>>]
- /// CHECK-DAG: <<Cond:z\d+>> LessThanOrEqual [<<Add>>,<<Const1>>]
- /// CHECK-DAG: <<Select>> Select [<<Const13>>,<<Const42>>,<<Cond>>]
- /// CHECK-DAG: Return [<<PhiX>>]
-
- public static int MultiplePhis() {
- int x = 0;
- int y = 1;
- while (y++ < 10) {
- if (y > 1) {
- x = 13;
- } else {
- x = 42;
- }
- }
- return x;
- }
-
/// CHECK-START: int Main.TrueBlockWithTooManyInstructions(boolean) select_generator (before)
/// CHECK-DAG: <<This:l\d+>> ParameterValue
/// CHECK-DAG: <<Cond:z\d+>> ParameterValue
@@ -366,23 +227,30 @@ public class Main {
}
public static void main(String[] args) throws Exception {
- assertBoolEquals(false, BooleanNot(true));
- assertBoolEquals(true, BooleanNot(false));
+ Class main2 = Class.forName("Main2");
+ Method booleanNot = main2.getMethod("BooleanNot", boolean.class);
+ Method valuesOrdered = main2.getMethod("ValuesOrdered", int.class, int.class, int.class);
+ Method negatedCondition = main2.getMethod("NegatedCondition", boolean.class);
+ Method multiplePhis = main2.getMethod("MultiplePhis");
+
+ assertBoolEquals(false, (boolean)booleanNot.invoke(null, true));
+ assertBoolEquals(true, (boolean)booleanNot.invoke(null, false));
assertBoolEquals(true, GreaterThan(10, 5));
assertBoolEquals(false, GreaterThan(10, 10));
assertBoolEquals(false, GreaterThan(5, 10));
assertBoolEquals(true, LessThan(5, 10));
assertBoolEquals(false, LessThan(10, 10));
assertBoolEquals(false, LessThan(10, 5));
- assertBoolEquals(true, ValuesOrdered(1, 3, 5));
- assertBoolEquals(true, ValuesOrdered(5, 3, 1));
- assertBoolEquals(false, ValuesOrdered(1, 3, 2));
- assertBoolEquals(false, ValuesOrdered(2, 3, 1));
- assertBoolEquals(true, ValuesOrdered(3, 3, 3));
- assertBoolEquals(true, ValuesOrdered(3, 3, 5));
- assertBoolEquals(false, ValuesOrdered(5, 5, 3));
- assertIntEquals(42, NegatedCondition(true));
- assertIntEquals(43, NegatedCondition(false));
+
+ assertBoolEquals(true, (boolean)valuesOrdered.invoke(null, 1, 3, 5));
+ assertBoolEquals(true, (boolean)valuesOrdered.invoke(null, 5, 3, 1));
+ assertBoolEquals(false, (boolean)valuesOrdered.invoke(null, 1, 3, 2));
+ assertBoolEquals(false, (boolean)valuesOrdered.invoke(null, 2, 3, 1));
+ assertBoolEquals(true, (boolean)valuesOrdered.invoke(null, 3, 3, 3));
+ assertBoolEquals(true, (boolean)valuesOrdered.invoke(null, 3, 3, 5));
+ assertBoolEquals(false, (boolean)valuesOrdered.invoke(null, 5, 5, 3));
+ assertIntEquals(42, (int)negatedCondition.invoke(null, true));
+ assertIntEquals(43, (int)negatedCondition.invoke(null, false));
assertIntEquals(46, SimpleTrueBlock(true, 4));
assertIntEquals(43, SimpleTrueBlock(false, 4));
assertIntEquals(42, SimpleFalseBlock(true, 7));
@@ -393,7 +261,7 @@ public class Main {
assertIntEquals(1, ThreeBlocks(true, false));
assertIntEquals(2, ThreeBlocks(false, true));
assertIntEquals(3, ThreeBlocks(false, false));
- assertIntEquals(13, MultiplePhis());
+ assertIntEquals(13, (int)multiplePhis.invoke(null));
Main m = new Main();
assertIntEquals(42, m.TrueBlockWithTooManyInstructions(true));