diff options
author | 2017-10-27 15:12:55 -0700 | |
---|---|---|
committer | 2017-10-27 15:12:55 -0700 | |
commit | a7342250ad72eb8c9c043d9d56d49bffcdcec31c (patch) | |
tree | d341e499e20c2933ae171a376998779a1ae091ed | |
parent | 0d2b2ad6cd9ca650d7a3f85a42afaf518cbfa4e0 (diff) |
Make boolean-2-integral-conv less dexer sensitive.
D8 generated code is pretty trivial so I left it out of the SmaliTests.
Bug: 65168732
Test: art/test/run-test ... 593-checker-boolean-2-integral-conv
Change-Id: Iddc907e9a27b856d3ac2412dd33fdffa0e7e2c24
3 files changed, 137 insertions, 73 deletions
diff --git a/test/593-checker-boolean-2-integral-conv/build b/test/593-checker-boolean-2-integral-conv/build index 3721955670..49292c9ac1 100755 --- a/test/593-checker-boolean-2-integral-conv/build +++ b/test/593-checker-boolean-2-integral-conv/build @@ -20,7 +20,4 @@ export USE_JACK=false # Also disable desugar because it is missing in jack platform builds. export DESUGAR=false -# See b/65168732 -export USE_D8=false - ./default-build "$@" diff --git a/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali b/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali index 00ebaaf451..494ab95434 100644 --- a/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali +++ b/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali @@ -30,6 +30,143 @@ return-void .end method +## CHECK-START: byte SmaliTests.booleanToByte(boolean) builder (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] +## CHECK-DAG: If [<<Cond>>] +## CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] +## CHECK-DAG: <<IToS:b\d+>> TypeConversion [<<Phi>>] +## CHECK-DAG: Return [<<IToS>>] + +## CHECK-START: byte SmaliTests.booleanToByte(boolean) select_generator (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] +## CHECK-DAG: <<IToS:b\d+>> TypeConversion [<<Sel>>] +## CHECK-DAG: Return [<<IToS>>] + +## CHECK-START: byte SmaliTests.booleanToByte(boolean) instruction_simplifier$after_bce (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: Return [<<Arg>>] +.method static booleanToByte(Z)B + .registers 2 + if-eqz p0, :cond_5 + const/4 v0, 0x1 + + :goto_3 + int-to-byte v0, v0 + return v0 + + :cond_5 + const/4 v0, 0x0 + goto :goto_3 +.end method + +## CHECK-START: short SmaliTests.booleanToShort(boolean) builder (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] +## CHECK-DAG: If [<<Cond>>] +## CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] +## CHECK-DAG: <<IToS:s\d+>> TypeConversion [<<Phi>>] +## CHECK-DAG: Return [<<IToS>>] + +## CHECK-START: short SmaliTests.booleanToShort(boolean) select_generator (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] +## CHECK-DAG: <<IToS:s\d+>> TypeConversion [<<Sel>>] +## CHECK-DAG: Return [<<IToS>>] + +## CHECK-START: short SmaliTests.booleanToShort(boolean) instruction_simplifier$after_bce (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: Return [<<Arg>>] +.method static booleanToShort(Z)S + .registers 2 + if-eqz p0, :cond_5 + const/4 v0, 0x1 + + :goto_3 + int-to-short v0, v0 + return v0 + + :cond_5 + const/4 v0, 0x0 + goto :goto_3 +.end method + +## CHECK-START: char SmaliTests.booleanToChar(boolean) builder (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] +## CHECK-DAG: If [<<Cond>>] +## CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] +## CHECK-DAG: <<IToC:c\d+>> TypeConversion [<<Phi>>] +## CHECK-DAG: Return [<<IToC>>] + +## CHECK-START: char SmaliTests.booleanToChar(boolean) select_generator (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] +## CHECK-DAG: <<IToC:c\d+>> TypeConversion [<<Sel>>] +## CHECK-DAG: Return [<<IToC>>] + +## CHECK-START: char SmaliTests.booleanToChar(boolean) instruction_simplifier$after_bce (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: Return [<<Arg>>] +.method static booleanToChar(Z)C + .registers 2 + if-eqz p0, :cond_5 + const/4 v0, 0x1 + + :goto_3 + int-to-char v0, v0 + return v0 + + :cond_5 + const/4 v0, 0x0 + goto :goto_3 +.end method + +## CHECK-START: int SmaliTests.booleanToInt(boolean) builder (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] +## CHECK-DAG: If [<<Cond>>] +## CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] +## CHECK-DAG: Return [<<Phi>>] + +## CHECK-START: int SmaliTests.booleanToInt(boolean) select_generator (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 +## CHECK-DAG: <<One:i\d+>> IntConstant 1 +## CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] +## CHECK-DAG: Return [<<Sel>>] + +## CHECK-START: int SmaliTests.booleanToInt(boolean) instruction_simplifier$after_bce (after) +## CHECK: <<Arg:z\d+>> ParameterValue +## CHECK-DAG: Return [<<Arg>>] +.method static booleanToInt(Z)I + .registers 2 + if-eqz p0, :cond_4 + const/4 v0, 0x1 + + :goto_3 + return v0 + + :cond_4 + const/4 v0, 0x0 + goto :goto_3 +.end method + ## CHECK-START: long SmaliTests.booleanToLong(boolean) builder (after) ## CHECK-DAG: <<Arg:z\d+>> ParameterValue ## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 diff --git a/test/593-checker-boolean-2-integral-conv/src/Main.java b/test/593-checker-boolean-2-integral-conv/src/Main.java index 3503b2e877..fdc0919f2b 100644 --- a/test/593-checker-boolean-2-integral-conv/src/Main.java +++ b/test/593-checker-boolean-2-integral-conv/src/Main.java @@ -32,24 +32,6 @@ public class Main { System.out.println("passed"); } - /// CHECK-START: byte Main.booleanToByte(boolean) builder (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] - /// CHECK-DAG: If [<<Cond>>] - /// CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] - /// CHECK-DAG: <<IToS:b\d+>> TypeConversion [<<Phi>>] - /// CHECK-DAG: Return [<<IToS>>] - - /// CHECK-START: byte Main.booleanToByte(boolean) select_generator (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] - /// CHECK-DAG: <<IToS:b\d+>> TypeConversion [<<Sel>>] - /// CHECK-DAG: Return [<<IToS>>] - /// CHECK-START: byte Main.booleanToByte(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -58,24 +40,6 @@ public class Main { return (byte)(b ? 1 : 0); } - /// CHECK-START: short Main.booleanToShort(boolean) builder (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] - /// CHECK-DAG: If [<<Cond>>] - /// CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] - /// CHECK-DAG: <<IToS:s\d+>> TypeConversion [<<Phi>>] - /// CHECK-DAG: Return [<<IToS>>] - - /// CHECK-START: short Main.booleanToShort(boolean) select_generator (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] - /// CHECK-DAG: <<IToS:s\d+>> TypeConversion [<<Sel>>] - /// CHECK-DAG: Return [<<IToS>>] - /// CHECK-START: short Main.booleanToShort(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -84,24 +48,6 @@ public class Main { return (short)(b ? 1 : 0); } - /// CHECK-START: char Main.booleanToChar(boolean) builder (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] - /// CHECK-DAG: If [<<Cond>>] - /// CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] - /// CHECK-DAG: <<IToC:c\d+>> TypeConversion [<<Phi>>] - /// CHECK-DAG: Return [<<IToC>>] - - /// CHECK-START: char Main.booleanToChar(boolean) select_generator (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] - /// CHECK-DAG: <<IToC:c\d+>> TypeConversion [<<Sel>>] - /// CHECK-DAG: Return [<<IToC>>] - /// CHECK-START: char Main.booleanToChar(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -110,22 +56,6 @@ public class Main { return (char)(b ? 1 : 0); } - /// CHECK-START: int Main.booleanToInt(boolean) builder (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Cond:z\d+>> Equal [<<Arg>>,<<Zero>>] - /// CHECK-DAG: If [<<Cond>>] - /// CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] - /// CHECK-DAG: Return [<<Phi>>] - - /// CHECK-START: int Main.booleanToInt(boolean) select_generator (after) - /// CHECK: <<Arg:z\d+>> ParameterValue - /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 - /// CHECK-DAG: <<One:i\d+>> IntConstant 1 - /// CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] - /// CHECK-DAG: Return [<<Sel>>] - /// CHECK-START: int Main.booleanToInt(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] |