diff options
| author | 2016-02-02 16:28:56 +0000 | |
|---|---|---|
| committer | 2016-02-15 10:21:07 +0000 | |
| commit | badd826664896d4a9628a5a89b78016894aa414b (patch) | |
| tree | a30e8b3e62126ae1e1df1152ac643cfc5f2b074a /test | |
| parent | 47a2a45a6673ddf3322115ff5058763f82a9368f (diff) | |
ART: Run SsaBuilder from HGraphBuilder
First step towards merging the two passes, which will later result in
HGraphBuilder directly producing SSA form. This CL mostly just updates
tests broken by not being able to inspect the pre-SSA form.
Using HLocals outside the HGraphBuilder is now deprecated.
Bug: 27150508
Change-Id: I00fb6050580f409dcc5aa5b5aa3a536d6e8d759e
Diffstat (limited to 'test')
24 files changed, 362 insertions, 202 deletions
diff --git a/test/127-checker-secondarydex/src/Test.java b/test/127-checker-secondarydex/src/Test.java index 266ed191bc..438e8545ff 100644 --- a/test/127-checker-secondarydex/src/Test.java +++ b/test/127-checker-secondarydex/src/Test.java @@ -23,7 +23,7 @@ public class Test extends Super { System.out.println("Test"); } - /// CHECK-START: java.lang.Integer Test.toInteger() ssa_builder (after) + /// CHECK-START: java.lang.Integer Test.toInteger() builder (after) /// CHECK: LoadClass needs_access_check:false klass:java.lang.Integer public Integer toInteger() { diff --git a/test/444-checker-nce/src/Main.java b/test/444-checker-nce/src/Main.java index 865355ce97..c96b18c71b 100644 --- a/test/444-checker-nce/src/Main.java +++ b/test/444-checker-nce/src/Main.java @@ -27,7 +27,7 @@ public class Main { return m.g(); } - /// CHECK-START: Main Main.thisTest() ssa_builder (after) + /// CHECK-START: Main Main.thisTest() builder (after) /// CHECK: NullCheck /// CHECK: InvokeStaticOrDirect @@ -38,7 +38,7 @@ public class Main { return g(); } - /// CHECK-START: Main Main.newInstanceRemoveTest() ssa_builder (after) + /// CHECK-START: Main Main.newInstanceRemoveTest() builder (after) /// CHECK: NewInstance /// CHECK: NullCheck /// CHECK: InvokeStaticOrDirect @@ -52,7 +52,7 @@ public class Main { return m.g(); } - /// CHECK-START: Main Main.newArrayRemoveTest() ssa_builder (after) + /// CHECK-START: Main Main.newArrayRemoveTest() builder (after) /// CHECK: NewArray /// CHECK: NullCheck /// CHECK: ArrayGet @@ -178,7 +178,7 @@ public class Main { return n.g(); } - /// CHECK-START: Main Main.scopeRemoveTest(int, Main) ssa_builder (after) + /// CHECK-START: Main Main.scopeRemoveTest(int, Main) builder (after) /// CHECK: NullCheck /// CHECK-START: Main Main.scopeRemoveTest(int, Main) instruction_simplifier (after) diff --git a/test/450-checker-types/src/Main.java b/test/450-checker-types/src/Main.java index d48b30e324..027a9d9487 100644 --- a/test/450-checker-types/src/Main.java +++ b/test/450-checker-types/src/Main.java @@ -205,7 +205,7 @@ public class Main { public static boolean $inline$InstanceofSubclassB(Object o) { return o instanceof SubclassB; } public static boolean $inline$InstanceofSubclassC(Object o) { return o instanceof SubclassC; } - /// CHECK-START: void Main.testInstanceOf_NotInlined(java.lang.Object) ssa_builder (after) + /// CHECK-START: void Main.testInstanceOf_NotInlined(java.lang.Object) builder (after) /// CHECK-DAG: <<Cst0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Cst1:i\d+>> IntConstant 1 /// CHECK-DAG: <<IOf1:z\d+>> InstanceOf @@ -229,7 +229,7 @@ public class Main { } } - /// CHECK-START: void Main.testNotInstanceOf_NotInlined(java.lang.Object) ssa_builder (after) + /// CHECK-START: void Main.testNotInstanceOf_NotInlined(java.lang.Object) builder (after) /// CHECK-DAG: <<Cst0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Cst1:i\d+>> IntConstant 1 /// CHECK-DAG: <<IOf1:z\d+>> InstanceOf @@ -487,7 +487,7 @@ public class Main { ((SubclassA)a[0]).$noinline$g(); } - /// CHECK-START: int Main.testLoadExceptionInCatchNonExact(int, int) ssa_builder (after) + /// CHECK-START: int Main.testLoadExceptionInCatchNonExact(int, int) builder (after) /// CHECK: LoadException klass:java.lang.ArithmeticException can_be_null:false exact:false public int testLoadExceptionInCatchNonExact(int x, int y) { try { @@ -497,7 +497,7 @@ public class Main { } } - /// CHECK-START: int Main.testLoadExceptionInCatchExact(int) ssa_builder (after) + /// CHECK-START: int Main.testLoadExceptionInCatchExact(int) builder (after) /// CHECK: LoadException klass:FinalException can_be_null:false exact:true public int testLoadExceptionInCatchExact(int x) { try { @@ -511,7 +511,7 @@ public class Main { } } - /// CHECK-START: int Main.testLoadExceptionInCatchAll(int, int) ssa_builder (after) + /// CHECK-START: int Main.testLoadExceptionInCatchAll(int, int) builder (after) /// CHECK: LoadException klass:java.lang.Throwable can_be_null:false exact:false public int testLoadExceptionInCatchAll(int x, int y) { try { @@ -532,7 +532,7 @@ public class Main { return genericFinal.get(); } - /// CHECK-START: SubclassC Main.inlineGenerics() ssa_builder (after) + /// CHECK-START: SubclassC Main.inlineGenerics() builder (after) /// CHECK: <<Invoke:l\d+>> InvokeStaticOrDirect klass:SubclassC exact:false /// CHECK-NEXT: Return [<<Invoke>>] @@ -544,7 +544,7 @@ public class Main { return c; } - /// CHECK-START: Final Main.inlineGenericsFinal() ssa_builder (after) + /// CHECK-START: Final Main.inlineGenericsFinal() builder (after) /// CHECK: <<Invoke:l\d+>> InvokeStaticOrDirect klass:Final exact:true /// CHECK-NEXT: Return [<<Invoke>>] @@ -586,7 +586,7 @@ public class Main { return new SubclassA(); } - /// CHECK-START: void Main.updateNodesInTheSameBlockAsPhi(boolean) ssa_builder (after) + /// CHECK-START: void Main.updateNodesInTheSameBlockAsPhi(boolean) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:Super /// CHECK: NullCheck [<<Phi>>] klass:Super @@ -620,7 +620,7 @@ public class Main { } - /// CHECK-START: void Main.argumentCheck(Super, double, SubclassA, Final) ssa_builder (after) + /// CHECK-START: void Main.argumentCheck(Super, double, SubclassA, Final) builder (after) /// CHECK: ParameterValue klass:Main can_be_null:false exact:false /// CHECK: ParameterValue klass:Super can_be_null:true exact:false /// CHECK: ParameterValue @@ -636,7 +636,7 @@ public class Main { private int mainField = 0; - /// CHECK-START: SuperInterface Main.getWiderType(boolean, Interface, OtherInterface) ssa_builder (after) + /// CHECK-START: SuperInterface Main.getWiderType(boolean, Interface, OtherInterface) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: Return [<<Phi>>] private SuperInterface getWiderType(boolean cond, Interface a, OtherInterface b) { @@ -692,7 +692,7 @@ public class Main { getSuper(); } - /// CHECK-START: void Main.testLoopPhiWithNullFirstInput(boolean) ssa_builder (after) + /// CHECK-START: void Main.testLoopPhiWithNullFirstInput(boolean) builder (after) /// CHECK-DAG: <<Null:l\d+>> NullConstant /// CHECK-DAG: <<Main:l\d+>> NewInstance klass:Main exact:true /// CHECK-DAG: <<LoopPhi:l\d+>> Phi [<<Null>>,<<LoopPhi>>,<<Main>>] klass:Main exact:true @@ -705,7 +705,7 @@ public class Main { } } - /// CHECK-START: java.lang.Object[] Main.testInstructionsWithUntypedParent() ssa_builder (after) + /// CHECK-START: java.lang.Object[] Main.testInstructionsWithUntypedParent() builder (after) /// CHECK-DAG: <<Null:l\d+>> NullConstant /// CHECK-DAG: <<LoopPhi:l\d+>> Phi [<<Null>>,<<Phi:l\d+>>] klass:java.lang.Object[] exact:true /// CHECK-DAG: <<Array:l\d+>> NewArray klass:java.lang.Object[] exact:true diff --git a/test/458-checker-instruction-simplification/src/Main.java b/test/458-checker-instruction-simplification/src/Main.java index 2f80470cb3..f2cba478c1 100644 --- a/test/458-checker-instruction-simplification/src/Main.java +++ b/test/458-checker-instruction-simplification/src/Main.java @@ -1401,7 +1401,7 @@ public class Main { // Test that conditions on float/double are not flipped. - /// CHECK-START: int Main.floatConditionNotEqualOne(float) ssa_builder (after) + /// CHECK-START: int Main.floatConditionNotEqualOne(float) builder (after) /// CHECK: LessThanOrEqual /// CHECK-START: int Main.floatConditionNotEqualOne(float) instruction_simplifier_before_codegen (after) @@ -1417,7 +1417,7 @@ public class Main { return ((f > 42.0f) == true) ? 13 : 54; } - /// CHECK-START: int Main.doubleConditionEqualZero(double) ssa_builder (after) + /// CHECK-START: int Main.doubleConditionEqualZero(double) builder (after) /// CHECK: LessThanOrEqual /// CHECK-START: int Main.doubleConditionEqualZero(double) instruction_simplifier_before_codegen (after) diff --git a/test/464-checker-inline-sharpen-calls/src/Main.java b/test/464-checker-inline-sharpen-calls/src/Main.java index 2222e0fa0c..3f256352b7 100644 --- a/test/464-checker-inline-sharpen-calls/src/Main.java +++ b/test/464-checker-inline-sharpen-calls/src/Main.java @@ -39,7 +39,7 @@ public final class Main { m.invokeVirtual(); } - /// CHECK-START: int Main.inlineSharpenHelperInvoke() ssa_builder (after) + /// CHECK-START: int Main.inlineSharpenHelperInvoke() builder (after) /// CHECK-DAG: <<Invoke:i\d+>> InvokeVirtual {{.*\.getFoo.*}} /// CHECK-DAG: Return [<<Invoke>>] diff --git a/test/477-checker-bound-type/src/Main.java b/test/477-checker-bound-type/src/Main.java index 0f65e44678..2504ab2839 100644 --- a/test/477-checker-bound-type/src/Main.java +++ b/test/477-checker-bound-type/src/Main.java @@ -17,7 +17,7 @@ public class Main { - /// CHECK-START: java.lang.Object Main.boundTypeForIf(java.lang.Object) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.boundTypeForIf(java.lang.Object) builder (after) /// CHECK: BoundType public static Object boundTypeForIf(Object a) { if (a != null) { @@ -27,7 +27,7 @@ public class Main { } } - /// CHECK-START: java.lang.Object Main.boundTypeForInstanceOf(java.lang.Object) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.boundTypeForInstanceOf(java.lang.Object) builder (after) /// CHECK: BoundType public static Object boundTypeForInstanceOf(Object a) { if (a instanceof Main) { @@ -37,7 +37,7 @@ public class Main { } } - /// CHECK-START: java.lang.Object Main.noBoundTypeForIf(java.lang.Object) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.noBoundTypeForIf(java.lang.Object) builder (after) /// CHECK-NOT: BoundType public static Object noBoundTypeForIf(Object a) { if (a == null) { @@ -47,7 +47,7 @@ public class Main { } } - /// CHECK-START: java.lang.Object Main.noBoundTypeForInstanceOf(java.lang.Object) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.noBoundTypeForInstanceOf(java.lang.Object) builder (after) /// CHECK-NOT: BoundType public static Object noBoundTypeForInstanceOf(Object a) { if (a instanceof Main) { diff --git a/test/492-checker-inline-invoke-interface/src/Main.java b/test/492-checker-inline-invoke-interface/src/Main.java index 3106ce4f3e..a919690000 100644 --- a/test/492-checker-inline-invoke-interface/src/Main.java +++ b/test/492-checker-inline-invoke-interface/src/Main.java @@ -31,7 +31,7 @@ public class Main implements Itf { int a = ForceStatic.field; } - /// CHECK-START: void Main.main(java.lang.String[]) ssa_builder (after) + /// CHECK-START: void Main.main(java.lang.String[]) builder (after) /// CHECK: InvokeStaticOrDirect {{.*Main.<init>.*}} /// CHECK: InvokeInterface diff --git a/test/510-checker-try-catch/smali/Builder.smali b/test/510-checker-try-catch/smali/Builder.smali index c91b83e18a..8ec840d159 100644 --- a/test/510-checker-try-catch/smali/Builder.smali +++ b/test/510-checker-try-catch/smali/Builder.smali @@ -41,28 +41,35 @@ ## CHECK: predecessors "<<BEnterTry2>>" ## CHECK: successors "<<BExitTry2:B\d+>>" ## CHECK: DivZeroCheck +## CHECK: <<Div:i\d+>> Div -## CHECK: name "<<BReturn:B\d+>>" -## CHECK: predecessors "<<BExitTry2>>" "<<BCatch1:B\d+>>" "<<BCatch2:B\d+>>" "<<BCatch3:B\d+>>" +## CHECK: name "<<BAfterTry2:B\d+>>" +## CHECK: predecessors "<<BExitTry2>>" +## CHECK: successors "<<BReturn:B\d+>>" +## CHECK: Goto + +## CHECK: name "<<BReturn>>" +## CHECK: predecessors "<<BAfterTry2>>" "<<BCatch1:B\d+>>" "<<BCatch2:B\d+>>" "<<BCatch3:B\d+>>" +## CHECK: Phi [<<Div>>,<<Minus1>>,<<Minus2>>,<<Minus3>>] ## CHECK: Return ## CHECK: name "<<BCatch1>>" ## CHECK: predecessors "<<BEnterTry1>>" "<<BExitTry1>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Goto ## CHECK: name "<<BCatch2>>" ## CHECK: predecessors "<<BEnterTry2>>" "<<BExitTry2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus2>>] +## CHECK: Goto ## CHECK: name "<<BCatch3>>" ## CHECK: predecessors "<<BEnterTry1>>" "<<BEnterTry2>>" "<<BExitTry1>>" "<<BExitTry2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus3>>] +## CHECK: Goto ## CHECK: name "<<BEnterTry1>>" ## CHECK: predecessors "B0" @@ -84,7 +91,7 @@ ## CHECK: name "<<BExitTry2>>" ## CHECK: predecessors "<<BTry2>>" -## CHECK: successors "<<BReturn>>" +## CHECK: successors "<<BAfterTry2>>" ## CHECK: xhandlers "<<BCatch2>>" "<<BCatch3>>" ## CHECK: TryBoundary kind:exit @@ -105,6 +112,8 @@ .catch Ljava/lang/OutOfMemoryError; {:try_start_2 .. :try_end_2} :catch_mem .catchall {:try_start_2 .. :try_end_2} :catch_other + nop + :return return p0 @@ -131,7 +140,7 @@ ## CHECK: name "<<BIf>>" ## CHECK: predecessors "B0" -## CHECK: successors "<<BEnterTry2:B\d+>>" "<<BThen:B\d+>>" +## CHECK: successors "<<BSplit1:B\d+>>" "<<BThen:B\d+>>" ## CHECK: If ## CHECK: name "<<BThen>>" @@ -145,19 +154,19 @@ ## CHECK: Div ## CHECK: name "<<BTry2:B\d+>>" -## CHECK: predecessors "<<BEnterTry2>>" +## CHECK: predecessors "<<BEnterTry2:B\d+>>" ## CHECK: successors "<<BExitTry2:B\d+>>" ## CHECK: Div ## CHECK: name "<<BReturn:B\d+>>" -## CHECK: predecessors "<<BExitTry2>>" "<<BCatch:B\d+>>" +## CHECK: predecessors "<<BSplit3:B\d+>>" "<<BCatch:B\d+>>" ## CHECK: Return ## CHECK: name "<<BCatch>>" ## CHECK: predecessors "<<BEnterTry1>>" "<<BEnterTry2>>" "<<BExitTry1>>" "<<BExitTry2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Goto ## CHECK: name "<<BEnterTry1>>" ## CHECK: predecessors "<<BThen>>" @@ -166,23 +175,38 @@ ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BEnterTry2>>" -## CHECK: predecessors "<<BIf>>" "<<BExitTry1>>" +## CHECK: predecessors "<<BSplit1>>" "<<BSplit2:B\d+>>" ## CHECK: successors "<<BTry2>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BExitTry1>>" ## CHECK: predecessors "<<BTry1>>" -## CHECK: successors "<<BEnterTry2>>" +## CHECK: successors "<<BSplit2>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit ## CHECK: name "<<BExitTry2>>" ## CHECK: predecessors "<<BTry2>>" -## CHECK: successors "<<BReturn>>" +## CHECK: successors "<<BSplit3>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit1>>" +## CHECK: predecessors "<<BIf>>" +## CHECK: successors "<<BEnterTry2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit2>>" +## CHECK: predecessors "<<BExitTry1>>" +## CHECK: successors "<<BEnterTry2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit3>>" +## CHECK: predecessors "<<BExitTry2>>" +## CHECK: successors "<<BReturn>>" +## CHECK: Goto + .method public static testMultipleEntries(IIII)I .registers 4 @@ -220,23 +244,24 @@ ## CHECK: name "<<BTry:B\d+>>" ## CHECK: predecessors "<<BEnterTry>>" ## CHECK: successors "<<BExitTry1:B\d+>>" "<<BExitTry2:B\d+>>" -## CHECK: Div +## CHECK: <<Div:i\d+>> Div ## CHECK: If ## CHECK: name "<<BReturn:B\d+>>" -## CHECK: predecessors "<<BExitTry2>>" "<<BThen:B\d+>>" "<<BCatch:B\d+>>" +## CHECK: predecessors "<<BSplit:B\d+>>" "<<BThen:B\d+>>" "<<BCatch:B\d+>>" +## CHECK: Phi [<<Div>>,<<Minus1>>,<<Minus2>>] ## CHECK: Return ## CHECK: name "<<BThen>>" ## CHECK: predecessors "<<BExitTry1>>" ## CHECK: successors "<<BReturn>>" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Goto ## CHECK: name "<<BCatch>>" ## CHECK: predecessors "<<BEnterTry>>" "<<BExitTry1>>" "<<BExitTry2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus2>>] +## CHECK: Goto ## CHECK: name "<<BEnterTry>>" ## CHECK: predecessors "B0" @@ -252,10 +277,15 @@ ## CHECK: name "<<BExitTry2>>" ## CHECK: predecessors "<<BTry>>" -## CHECK: successors "<<BReturn>>" +## CHECK: successors "<<BSplit>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit>>" +## CHECK: predecessors "<<BExitTry2>>" +## CHECK: successors "<<BReturn>>" +## CHECK: Goto + .method public static testMultipleExits(II)I .registers 2 @@ -295,23 +325,25 @@ ## CHECK: name "<<BTry2:B\d+>>" ## CHECK: predecessors "<<BEnter2:B\d+>>" ## CHECK: successors "<<BExit2:B\d+>>" -## CHECK: Div +## CHECK: <<Div:i\d+>> Div +## CHECK: Goto ## CHECK: name "<<BReturn:B\d+>>" -## CHECK: predecessors "<<BExit2>>" "<<BCatch1:B\d+>>" "<<BCatch2:B\d+>>" +## CHECK: predecessors "<<BSplit:B\d+>>" "<<BCatch1:B\d+>>" "<<BCatch2:B\d+>>" +## CHECK: Phi [<<Div>>,<<Minus1>>,<<Minus2>>] ## CHECK: Return ## CHECK: name "<<BCatch1>>" ## CHECK: predecessors "<<BEnter1>>" "<<BExit1>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Goto ## CHECK: name "<<BCatch2>>" ## CHECK: predecessors "<<BEnter2>>" "<<BExit2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus2>>] +## CHECK: Goto ## CHECK: name "<<BEnter1>>" ## CHECK: predecessors "B0" @@ -333,10 +365,15 @@ ## CHECK: name "<<BExit2>>" ## CHECK: predecessors "<<BTry2>>" -## CHECK: successors "<<BReturn>>" +## CHECK: successors "<<BSplit>>" ## CHECK: xhandlers "<<BCatch2>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit>>" +## CHECK: predecessors "<<BExit2>>" +## CHECK: successors "<<BReturn>>" +## CHECK: Goto + .method public static testSharedBoundary(III)I .registers 3 @@ -378,28 +415,31 @@ ## CHECK: name "<<BTry1:B\d+>>" ## CHECK: predecessors "<<BEnter1:B\d+>>" ## CHECK: successors "<<BExit1:B\d+>>" -## CHECK: Div +## CHECK: <<Div:i\d+>> Div +## CHECK: Goto ## CHECK: name "<<BTry2:B\d+>>" ## CHECK: predecessors "<<BEnter2>>" ## CHECK: successors "<<BExit2:B\d+>>" ## CHECK: Div +## CHECK: Goto ## CHECK: name "<<BReturn:B\d+>>" -## CHECK: predecessors "<<BExit1>>" "<<BCatch1:B\d+>>" "<<BCatch2:B\d+>>" +## CHECK: predecessors "<<BSplit:B\d+>>" "<<BCatch1:B\d+>>" "<<BCatch2:B\d+>>" +## CHECK: Phi [<<Div>>,<<Minus1>>,<<Minus2>>] ## CHECK: Return ## CHECK: name "<<BCatch1>>" ## CHECK: predecessors "<<BEnter1>>" "<<BExit1>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Goto ## CHECK: name "<<BCatch2>>" ## CHECK: predecessors "<<BEnter2>>" "<<BExit2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus2>>] +## CHECK: Goto ## CHECK: name "<<BEnter1>>" ## CHECK: predecessors "<<BExit2>>" @@ -415,7 +455,7 @@ ## CHECK: name "<<BExit1>>" ## CHECK: predecessors "<<BTry1>>" -## CHECK: successors "<<BReturn>>" +## CHECK: successors "<<BSplit>>" ## CHECK: xhandlers "<<BCatch1>>" ## CHECK: TryBoundary kind:exit @@ -425,6 +465,11 @@ ## CHECK: xhandlers "<<BCatch2>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit>>" +## CHECK: predecessors "<<BExit1>>" +## CHECK: successors "<<BReturn>>" +## CHECK: Goto + .method public static testSharedBoundary_Reverse(III)I .registers 3 @@ -472,26 +517,30 @@ ## CHECK: predecessors "<<BEnter2:B\d+>>" ## CHECK: successors "<<BExit2:B\d+>>" ## CHECK: Div +## CHECK: Goto ## CHECK: name "<<BTry3:B\d+>>" ## CHECK: predecessors "<<BEnter3:B\d+>>" ## CHECK: successors "<<BExit3:B\d+>>" -## CHECK: Div +## CHECK: <<Div:i\d+>> Div +## CHECK: Goto ## CHECK: name "<<BReturn:B\d+>>" -## CHECK: predecessors "<<BExit3>>" "<<BCatchArith:B\d+>>" "<<BCatchAll:B\d+>>" +## CHECK: predecessors "<<BSplit:B\d+>>" "<<BCatchArith:B\d+>>" "<<BCatchAll:B\d+>>" +## CHECK: Phi [<<Div>>,<<Minus1>>,<<Minus2>>] +## CHECK: Return ## CHECK: name "<<BCatchArith>>" ## CHECK: predecessors "<<BEnter2>>" "<<BExit2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Goto ## CHECK: name "<<BCatchAll>>" ## CHECK: predecessors "<<BEnter1>>" "<<BEnter2>>" "<<BEnter3>>" "<<BExit1>>" "<<BExit2>>" "<<BExit3>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus2>>] +## CHECK: Goto ## CHECK: name "<<BEnter1>>" ## CHECK: predecessors "B0" @@ -525,10 +574,15 @@ ## CHECK: name "<<BExit3>>" ## CHECK: predecessors "<<BTry3>>" -## CHECK: successors "<<BReturn>>" +## CHECK: successors "<<BSplit>>" ## CHECK: xhandlers "<<BCatchAll>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit>>" +## CHECK: predecessors "<<BExit3>>" +## CHECK: successors "<<BReturn>>" +## CHECK: Goto + .method public static testNestedTry(IIII)I .registers 4 @@ -567,14 +621,18 @@ ## CHECK: predecessors "<<BEnterTry1:B\d+>>" ## CHECK: successors "<<BExitTry1:B\d+>>" ## CHECK: Div +## CHECK: Goto ## CHECK: name "<<BTry2:B\d+>>" ## CHECK: predecessors "<<BEnterTry2:B\d+>>" ## CHECK: successors "<<BExitTry2:B\d+>>" -## CHECK: Div +## CHECK: <<Div:i\d+>> Div +## CHECK: Goto ## CHECK: name "<<BReturn:B\d+>>" -## CHECK: predecessors "<<BExitTry2>>" "<<BCatch:B\d+>>" +## CHECK: predecessors "<<BSplit:B\d+>>" "<<BCatch:B\d+>>" +## CHECK: Phi [<<Div>>,<<Minus1>>] +## CHECK: Return ## CHECK: name "<<BOutside:B\d+>>" ## CHECK: predecessors "<<BExitTry1>>" @@ -585,7 +643,7 @@ ## CHECK: predecessors "<<BEnterTry1>>" "<<BEnterTry2>>" "<<BExitTry1>>" "<<BExitTry2>>" ## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Goto ## CHECK: name "<<BEnterTry1>>" ## CHECK: predecessors "B0" @@ -607,10 +665,15 @@ ## CHECK: name "<<BExitTry2>>" ## CHECK: predecessors "<<BTry2>>" -## CHECK: successors "<<BReturn>>" +## CHECK: successors "<<BSplit>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit>>" +## CHECK: predecessors "<<BExitTry2>>" +## CHECK: successors "<<BReturn>>" +## CHECK: Goto + .method public static testIncontinuousTry(IIII)I .registers 4 @@ -642,12 +705,12 @@ ## CHECK: name "<<BPSwitch0>>" ## CHECK: predecessors "B0" -## CHECK: successors "<<BEnterTry2:B\d+>>" "<<BPSwitch1:B\d+>>" +## CHECK: successors "<<BSplit1:B\d+>>" "<<BPSwitch1:B\d+>>" ## CHECK: If ## CHECK: name "<<BPSwitch1>>" ## CHECK: predecessors "<<BPSwitch0>>" -## CHECK: successors "<<BOutside:B\d+>>" "<<BEnterTry1:B\d+>>" +## CHECK: successors "<<BSplit2:B\d+>>" "<<BEnterTry1:B\d+>>" ## CHECK: If ## CHECK: name "<<BTry1:B\d+>>" @@ -656,44 +719,68 @@ ## CHECK: Div ## CHECK: name "<<BTry2:B\d+>>" -## CHECK: predecessors "<<BEnterTry2>>" +## CHECK: predecessors "<<BEnterTry2:B\d+>>" ## CHECK: successors "<<BExitTry2:B\d+>>" ## CHECK: Div -## CHECK: name "<<BOutside>>" -## CHECK: predecessors "<<BPSwitch1>>" "<<BExitTry2>>" -## CHECK: successors "<<BCatchReturn:B\d+>>" +## CHECK: name "<<BOutside:B\d+>>" +## CHECK: predecessors "<<BSplit2>>" "<<BSplit4:B\d+>>" +## CHECK: successors "<<BReturn:B\d+>>" ## CHECK: Div -## CHECK: name "<<BCatchReturn>>" -## CHECK: predecessors "<<BOutside>>" "<<BEnterTry1>>" "<<BEnterTry2>>" "<<BExitTry1>>" "<<BExitTry2>>" +## CHECK: name "<<BCatch:B\d+>>" +## CHECK: predecessors "<<BEnterTry1>>" "<<BEnterTry2>>" "<<BExitTry1>>" "<<BExitTry2>>" ## CHECK: flags "catch_block" -## CHECK: Return +## CHECK: Goto ## CHECK: name "<<BEnterTry1>>" ## CHECK: predecessors "<<BPSwitch1>>" ## CHECK: successors "<<BTry1>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BEnterTry2>>" -## CHECK: predecessors "<<BPSwitch0>>" +## CHECK: predecessors "<<BSplit1>>" "<<BSplit3:B\d+>>" ## CHECK: successors "<<BTry2>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BExitTry1>>" ## CHECK: predecessors "<<BTry1>>" -## CHECK: successors "<<BEnterTry2>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: successors "<<BSplit3>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit ## CHECK: name "<<BExitTry2>>" ## CHECK: predecessors "<<BTry2>>" -## CHECK: successors "<<BOutside>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: successors "<<BSplit4>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BReturn>>" +## CHECK: predecessors "<<BCatch>>" "<<BOutside>>" +## CHECK: Return + +## CHECK: name "<<BSplit1>>" +## CHECK: predecessors "<<BPSwitch0>>" +## CHECK: successors "<<BEnterTry2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit2>>" +## CHECK: predecessors "<<BPSwitch1>>" +## CHECK: successors "<<BOutside>>" +## CHECK: Goto + +## CHECK: name "<<BSplit3>>" +## CHECK: predecessors "<<BExitTry1>>" +## CHECK: successors "<<BEnterTry2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit4>>" +## CHECK: predecessors "<<BExitTry2>>" +## CHECK: successors "<<BOutside>>" +## CHECK: Goto + .method public static testSwitchTryEnter(IIII)I .registers 4 @@ -728,58 +815,78 @@ ## CHECK: name "<<BPSwitch0:B\d+>>" ## CHECK: predecessors "<<BEnterTry1>>" -## CHECK: successors "<<BTry2:B\d+>>" "<<BExitTry1:B\d+>>" +## CHECK: successors "<<BSplit1:B\d+>>" "<<BExitTry1:B\d+>>" ## CHECK: If ## CHECK: name "<<BPSwitch1:B\d+>>" ## CHECK: predecessors "<<BExitTry1>>" -## CHECK: successors "<<BOutside:B\d+>>" "<<BEnterTry2:B\d+>>" +## CHECK: successors "<<BSplit2:B\d+>>" "<<BEnterTry2:B\d+>>" ## CHECK: If ## CHECK: name "<<BTry1:B\d+>>" ## CHECK: predecessors "<<BEnterTry2>>" -## CHECK: successors "<<BTry2>>" +## CHECK: successors "<<BTry2:B\d+>>" ## CHECK: Div ## CHECK: name "<<BTry2>>" -## CHECK: predecessors "<<BPSwitch0>>" +## CHECK: predecessors "<<BSplit1>>" "<<BTry1>>" ## CHECK: successors "<<BExitTry2:B\d+>>" ## CHECK: Div -## CHECK: name "<<BOutside>>" -## CHECK: predecessors "<<BPSwitch1>>" "<<BExitTry2>>" -## CHECK: successors "<<BCatchReturn:B\d+>>" +## CHECK: name "<<BOutside:B\d+>>" +## CHECK: predecessors "<<BSplit2>>" "<<BSplit3:B\d+>>" +## CHECK: successors "<<BReturn:B\d+>>" ## CHECK: Div -## CHECK: name "<<BCatchReturn>>" -## CHECK: predecessors "<<BOutside>>" "<<BEnterTry1>>" "<<BEnterTry2>>" "<<BExitTry1>>" "<<BExitTry2>>" +## CHECK: name "<<BCatch:B\d+>>" +## CHECK: predecessors "<<BEnterTry1>>" "<<BEnterTry2>>" "<<BExitTry1>>" "<<BExitTry2>>" +## CHECK: successors "<<BReturn>>" ## CHECK: flags "catch_block" -## CHECK: Return +## CHECK: Goto ## CHECK: name "<<BEnterTry1>>" ## CHECK: predecessors "B0" ## CHECK: successors "<<BPSwitch0>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BEnterTry2>>" ## CHECK: predecessors "<<BPSwitch1>>" ## CHECK: successors "<<BTry1>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BExitTry1>>" ## CHECK: predecessors "<<BPSwitch0>>" ## CHECK: successors "<<BPSwitch1>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit ## CHECK: name "<<BExitTry2>>" ## CHECK: predecessors "<<BTry2>>" -## CHECK: successors "<<BOutside>>" -## CHECK: xhandlers "<<BCatchReturn>>" +## CHECK: successors "<<BSplit3>>" +## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BReturn>>" +## CHECK: predecessors "<<BCatch>>" "<<BOutside>>" +## CHECK: Return + +## CHECK: name "<<BSplit1>>" +## CHECK: predecessors "<<BPSwitch0>>" +## CHECK: successors "<<BTry2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit2>>" +## CHECK: predecessors "<<BPSwitch1>>" +## CHECK: successors "<<BOutside>>" +## CHECK: Goto + +## CHECK: name "<<BSplit3>>" +## CHECK: predecessors "<<BExitTry2>>" +## CHECK: successors "<<BOutside>>" +## CHECK: Goto + .method public static testSwitchTryExit(IIII)I .registers 4 @@ -825,7 +932,7 @@ ## CHECK: predecessors "<<BEnterTry>>" "<<BExitTry>>" ## CHECK: successors "<<BExit:B\d+>>" ## CHECK: flags "catch_block" -## CHECK: StoreLocal [v0,<<Minus1>>] +## CHECK: Return [<<Minus1>>] ## CHECK: name "<<BExit>>" ## CHECK: predecessors "<<BExitTry>>" "<<BCatch>>" @@ -861,18 +968,21 @@ ## CHECK-START: int Builder.testCatchLoop(int, int, int) builder (after) ## CHECK: name "B0" -## CHECK: successors "<<BCatch:B\d+>>" +## CHECK: successors "<<BSplit2:B\d+>>" -## CHECK: name "<<BCatch>>" -## CHECK: predecessors "B0" "<<BEnterTry:B\d+>>" "<<BExitTry:B\d+>>" -## CHECK: successors "<<BEnterTry>>" +## CHECK: name "<<BCatch:B\d+>>" +## CHECK: predecessors "<<BEnterTry:B\d+>>" "<<BExitTry:B\d+>>" +## CHECK: successors "<<BSplit1:B\d+>>" ## CHECK: flags "catch_block" ## CHECK: name "<<BReturn:B\d+>>" ## CHECK: predecessors "<<BExitTry>>" ## CHECK: successors "<<BExit:B\d+>>" +## CHECK: Return ## CHECK: name "<<BExit>>" +## CHECK: predecessors "<<BReturn>>" +## CHECK: Exit ## CHECK: name "<<BTry:B\d+>>" ## CHECK: predecessors "<<BEnterTry>>" @@ -880,7 +990,7 @@ ## CHECK: Div ## CHECK: name "<<BEnterTry>>" -## CHECK: predecessors "<<BCatch>>" +## CHECK: predecessors "<<BSplit1>>" ## CHECK: successors "<<BTry>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry @@ -891,6 +1001,16 @@ ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit1>>" +## CHECK: predecessors "<<BSplit2>>" "<<BCatch>>" +## CHECK: successors "<<BEnterTry>>" +## CHECK: Goto + +## CHECK: name "<<BSplit2>>" +## CHECK: predecessors "B0" +## CHECK: successors "<<BSplit1>>" +## CHECK: Goto + .method public static testCatchLoop(III)I .registers 4 @@ -918,14 +1038,16 @@ ## CHECK: Div ## CHECK: name "<<BCatch:B\d+>>" -## CHECK: predecessors "<<BExitTry1>>" "<<BEnterTry1>>" "<<BEnterTry2:B\d+>>" "<<BExitTry1>>" "<<BExitTry2:B\d+>>" -## CHECK: successors "<<BEnterTry2>>" +## CHECK: predecessors "<<BEnterTry1>>" "<<BEnterTry2:B\d+>>" "<<BExitTry1>>" "<<BExitTry2:B\d+>>" +## CHECK: successors "<<BSplit1:B\d+>>" ## CHECK: flags "catch_block" ## CHECK: name "<<BReturn:B\d+>>" ## CHECK: predecessors "<<BExitTry2>>" +## CHECK: successors "<<BExit:B\d+>>" -## CHECK: name "{{B\d+}}" +## CHECK: name "<<BExit>>" +## CHECK: predecessors "<<BReturn>>" ## CHECK: Exit ## CHECK: name "<<BTry2:B\d+>>" @@ -940,14 +1062,14 @@ ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BEnterTry2>>" -## CHECK: predecessors "<<BCatch>>" +## CHECK: predecessors "<<BSplit1>>" ## CHECK: successors "<<BTry2>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BExitTry1>>" ## CHECK: predecessors "<<BTry1>>" -## CHECK: successors "<<BCatch>>" +## CHECK: successors "<<BSplit2:B\d+>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit @@ -957,6 +1079,16 @@ ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit1>>" +## CHECK: predecessors "<<BSplit2>>" "<<BCatch>>" +## CHECK: successors "<<BEnterTry2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit2>>" +## CHECK: predecessors "<<BExitTry1>>" +## CHECK: successors "<<BSplit1>>" +## CHECK: Goto + .method public static testHandlerEdge1(III)I .registers 4 @@ -977,16 +1109,16 @@ ## CHECK-START: int Builder.testHandlerEdge2(int, int, int) builder (after) ## CHECK: name "B0" -## CHECK: successors "<<BCatch1:B\d+>>" +## CHECK: successors "<<BSplit4:B\d+>>" -## CHECK: name "<<BCatch1>>" -## CHECK: predecessors "B0" "<<BEnterTry2:B\d+>>" "<<BExitTry2:B\d+>>" -## CHECK: successors "<<BEnterTry1:B\d+>>" +## CHECK: name "<<BCatch1:B\d+>>" +## CHECK: predecessors "<<BEnterTry2:B\d+>>" "<<BExitTry2:B\d+>>" +## CHECK: successors "<<BSplit1:B\d+>>" ## CHECK: flags "catch_block" ## CHECK: name "<<BCatch2:B\d+>>" -## CHECK: predecessors "<<BExitTry1:B\d+>>" "<<BEnterTry1>>" "<<BExitTry1>>" -## CHECK: successors "<<BEnterTry2>>" +## CHECK: predecessors "<<BEnterTry1:B\d+>>" "<<BExitTry1:B\d+>>" +## CHECK: successors "<<BSplit2:B\d+>>" ## CHECK: flags "catch_block" ## CHECK: name "<<BReturn:B\d+>>" @@ -995,6 +1127,7 @@ ## CHECK: Return ## CHECK: name "<<BExit>>" +## CHECK: Exit ## CHECK: name "<<BTry1:B\d+>>" ## CHECK: predecessors "<<BEnterTry1>>" @@ -1007,20 +1140,20 @@ ## CHECK: Div ## CHECK: name "<<BEnterTry1>>" -## CHECK: predecessors "<<BCatch1>>" +## CHECK: predecessors "<<BSplit1>>" ## CHECK: successors "<<BTry1>>" ## CHECK: xhandlers "<<BCatch2>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BEnterTry2>>" -## CHECK: predecessors "<<BCatch2>>" +## CHECK: predecessors "<<BSplit2>>" ## CHECK: successors "<<BTry2>>" ## CHECK: xhandlers "<<BCatch1>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BExitTry1>>" ## CHECK: predecessors "<<BTry1>>" -## CHECK: successors "<<BCatch2>>" +## CHECK: successors "<<BSplit3:B\d+>>" ## CHECK: xhandlers "<<BCatch2>>" ## CHECK: TryBoundary kind:exit @@ -1030,6 +1163,26 @@ ## CHECK: xhandlers "<<BCatch1>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit1>>" +## CHECK: predecessors "<<BSplit4>>" "<<BCatch1>>" +## CHECK: successors "<<BEnterTry1>>" +## CHECK: Goto + +## CHECK: name "<<BSplit2>>" +## CHECK: predecessors "<<BCatch2>>" "<<BSplit3>>" +## CHECK: successors "<<BEnterTry2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit3>>" +## CHECK: predecessors "<<BExitTry1>>" +## CHECK: successors "<<BSplit2>>" +## CHECK: Goto + +## CHECK: name "<<BSplit4>>" +## CHECK: predecessors "B0" +## CHECK: successors "<<BSplit1>>" +## CHECK: Goto + .method public static testHandlerEdge2(III)I .registers 4 @@ -1053,10 +1206,10 @@ ## CHECK-START: int Builder.testTryInLoop(int, int) builder (after) ## CHECK: name "B0" -## CHECK: successors "<<BEnterTry:B\d+>>" +## CHECK: successors "<<BSplit1:B\d+>>" ## CHECK: name "<<BTry:B\d+>>" -## CHECK: predecessors "<<BEnterTry>>" +## CHECK: predecessors "<<BEnterTry:B\d+>>" ## CHECK: successors "<<BExitTry:B\d+>>" ## CHECK: Div @@ -1065,22 +1218,28 @@ ## CHECK: successors "<<BEnterTry>>" ## CHECK: flags "catch_block" -## CHECK: name "<<BExit:B\d+>>" -## CHECK-NOT: predecessors "{{B\d+}}" -## CHECK: end_block - ## CHECK: name "<<BEnterTry>>" -## CHECK: predecessors "B0" +## CHECK: predecessors "<<BSplit1>>" ## CHECK: successors "<<BTry>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:entry ## CHECK: name "<<BExitTry>>" ## CHECK: predecessors "<<BTry>>" -## CHECK: successors "<<BEnterTry>>" +## CHECK: successors "<<BSplit2:B\d+>>" ## CHECK: xhandlers "<<BCatch>>" ## CHECK: TryBoundary kind:exit +## CHECK: name "<<BSplit1>>" +## CHECK: predecessors "B0" +## CHECK: successors "<<BEnterTry>>" +## CHECK: Goto + +## CHECK: name "<<BSplit2>>" +## CHECK: predecessors "<<BExitTry>>" +## CHECK: successors "<<BEnterTry>>" +## CHECK: Goto + .method public static testTryInLoop(II)I .registers 3 @@ -1098,9 +1257,10 @@ # INVOKE it follows, even if there is a try boundary between them. ## CHECK-START: int Builder.testMoveResult_Invoke(int, int, int) builder (after) - -## CHECK: <<Res:i\d+>> InvokeStaticOrDirect -## CHECK-NEXT: StoreLocal [v0,<<Res>>] +## CHECK-DAG: <<M1:i\d+>> IntConstant -1 +## CHECK-DAG: <<Res:i\d+>> InvokeStaticOrDirect +## CHECK-DAG: <<Phi:i\d+>> Phi [<<Res>>,<<M1>>] +## CHECK-DAG: Return [<<Phi>>] .method public static testMoveResult_Invoke(III)I .registers 3 @@ -1124,15 +1284,16 @@ # FILLED_NEW_ARRAY it follows, even if there is a try boundary between them. ## CHECK-START: int[] Builder.testMoveResult_FilledNewArray(int, int, int) builder (after) - -## CHECK: <<Res:l\d+>> NewArray -## CHECK-NEXT: <<Local1:i\d+>> LoadLocal [v0] -## CHECK-NEXT: ArraySet [<<Res>>,{{i\d+}},<<Local1>>] -## CHECK-NEXT: <<Local2:i\d+>> LoadLocal [v1] -## CHECK-NEXT: ArraySet [<<Res>>,{{i\d+}},<<Local2>>] -## CHECK-NEXT: <<Local3:i\d+>> LoadLocal [v2] -## CHECK-NEXT: ArraySet [<<Res>>,{{i\d+}},<<Local3>>] -## CHECK-NEXT: StoreLocal [v0,<<Res>>] +## CHECK-DAG: <<Arg1:i\d+>> ParameterValue +## CHECK-DAG: <<Arg2:i\d+>> ParameterValue +## CHECK-DAG: <<Arg3:i\d+>> ParameterValue +## CHECK-DAG: <<Null:l\d+>> NullConstant +## CHECK-DAG: <<Res:l\d+>> NewArray +## CHECK-DAG: ArraySet [<<Res>>,{{i\d+}},<<Arg1>>] +## CHECK-DAG: ArraySet [<<Res>>,{{i\d+}},<<Arg2>>] +## CHECK-DAG: ArraySet [<<Res>>,{{i\d+}},<<Arg3>>] +## CHECK-DAG: <<Phi:l\d+>> Phi [<<Res>>,<<Null>>] +## CHECK-DAG: Return [<<Phi>>] .method public static testMoveResult_FilledNewArray(III)[I .registers 3 diff --git a/test/510-checker-try-catch/smali/SsaBuilder.smali b/test/510-checker-try-catch/smali/SsaBuilder.smali index a6a5bfebee..1fd5fb2dd6 100644 --- a/test/510-checker-try-catch/smali/SsaBuilder.smali +++ b/test/510-checker-try-catch/smali/SsaBuilder.smali @@ -19,7 +19,7 @@ # Tests that catch blocks with both normal and exceptional predecessors are # split in two. -## CHECK-START: int SsaBuilder.testSimplifyCatchBlock(int, int, int) ssa_builder (after) +## CHECK-START: int SsaBuilder.testSimplifyCatchBlock(int, int, int) builder (after) ## CHECK: name "B1" ## CHECK-NEXT: from_bci @@ -62,7 +62,7 @@ # Should be rejected because :catch_all is a loop header. -## CHECK-START: int SsaBuilder.testCatchLoopHeader(int, int, int) ssa_builder (after, bad_state) +## CHECK-START: int SsaBuilder.testCatchLoopHeader(int, int, int) builder (after, bad_state) .method public static testCatchLoopHeader(III)I .registers 4 @@ -84,7 +84,7 @@ # Tests creation of catch Phis. -## CHECK-START: int SsaBuilder.testPhiCreation(int, int, int) ssa_builder (after) +## CHECK-START: int SsaBuilder.testPhiCreation(int, int, int) builder (after) ## CHECK-DAG: <<P0:i\d+>> ParameterValue ## CHECK-DAG: <<P1:i\d+>> ParameterValue ## CHECK-DAG: <<P2:i\d+>> ParameterValue @@ -127,7 +127,7 @@ # Tests that phi elimination does not remove catch phis where the value does # not dominate the phi. -## CHECK-START: int SsaBuilder.testPhiElimination_Domination(int, int) ssa_builder (after) +## CHECK-START: int SsaBuilder.testPhiElimination_Domination(int, int) builder (after) ## CHECK-DAG: <<P0:i\d+>> ParameterValue ## CHECK-DAG: <<P1:i\d+>> ParameterValue ## CHECK-DAG: <<Cst5:i\d+>> IntConstant 5 @@ -168,7 +168,7 @@ # Tests that phi elimination loops until no more phis can be removed. -## CHECK-START: int SsaBuilder.testPhiElimination_Dependencies(int, int, int) ssa_builder (after) +## CHECK-START: int SsaBuilder.testPhiElimination_Dependencies(int, int, int) builder (after) ## CHECK-NOT: Phi .method public static testPhiElimination_Dependencies(III)I @@ -200,10 +200,7 @@ # Tests that dead catch blocks are removed. -## CHECK-START: int SsaBuilder.testDeadCatchBlock(int, int, int) ssa_builder (before) -## CHECK: Mul - -## CHECK-START: int SsaBuilder.testDeadCatchBlock(int, int, int) ssa_builder (after) +## CHECK-START: int SsaBuilder.testDeadCatchBlock(int, int, int) builder (after) ## CHECK-DAG: <<P0:i\d+>> ParameterValue ## CHECK-DAG: <<P1:i\d+>> ParameterValue ## CHECK-DAG: <<P2:i\d+>> ParameterValue @@ -211,7 +208,7 @@ ## CHECK-DAG: <<Add2:i\d+>> Add [<<Add1>>,<<P2>>] ## CHECK-DAG: Return [<<Add2>>] -## CHECK-START: int SsaBuilder.testDeadCatchBlock(int, int, int) ssa_builder (after) +## CHECK-START: int SsaBuilder.testDeadCatchBlock(int, int, int) builder (after) ## CHECK-NOT: flags "catch_block" ## CHECK-NOT: Mul diff --git a/test/517-checker-builder-fallthrough/smali/TestCase.smali b/test/517-checker-builder-fallthrough/smali/TestCase.smali index bc9502b31a..946f169948 100644 --- a/test/517-checker-builder-fallthrough/smali/TestCase.smali +++ b/test/517-checker-builder-fallthrough/smali/TestCase.smali @@ -25,8 +25,8 @@ ## CHECK: name "B1" ## CHECK: successors "B5" "B2" -## CHECK: StoreLocal [v0,<<Const0>>] -## CHECK: If +## CHECK: <<Cond:z\d+>> Equal [<<Const0>>,<<Const0>>] +## CHECK: If [<<Cond>>] ## CHECK: name "B2" ## CHECK: successors "B4" diff --git a/test/523-checker-can-throw-regression/smali/Test.smali b/test/523-checker-can-throw-regression/smali/Test.smali index 87192ea123..4b737a9057 100644 --- a/test/523-checker-can-throw-regression/smali/Test.smali +++ b/test/523-checker-can-throw-regression/smali/Test.smali @@ -46,8 +46,10 @@ div-int/2addr p0, p1 :else div-int/2addr p0, p2 - return p0 :try_end_2 - .catchall {:try_start_2 .. :try_end_2} :catchall + .catchall {:try_start_2 .. :try_end_2} :catchall2 + + :catchall2 + return p0 .end method diff --git a/test/537-checker-debuggable/smali/TestCase.smali b/test/537-checker-debuggable/smali/TestCase.smali index 8e6c7ef727..5714d3aeae 100644 --- a/test/537-checker-debuggable/smali/TestCase.smali +++ b/test/537-checker-debuggable/smali/TestCase.smali @@ -20,10 +20,10 @@ # be eliminated in normal mode but kept live in debuggable mode. Test that # Checker runs the correct test for each compilation mode. -## CHECK-START: int TestCase.deadPhi(int, int, int) ssa_builder (after) +## CHECK-START: int TestCase.deadPhi(int, int, int) builder (after) ## CHECK-NOT: Phi -## CHECK-START-DEBUGGABLE: int TestCase.deadPhi(int, int, int) ssa_builder (after) +## CHECK-START-DEBUGGABLE: int TestCase.deadPhi(int, int, int) builder (after) ## CHECK: Phi .method public static deadPhi(III)I diff --git a/test/540-checker-rtp-bug/src/Main.java b/test/540-checker-rtp-bug/src/Main.java index 9a9f0b6048..17b11db295 100644 --- a/test/540-checker-rtp-bug/src/Main.java +++ b/test/540-checker-rtp-bug/src/Main.java @@ -21,7 +21,7 @@ final class Final { } public class Main { - /// CHECK-START: Final Main.testKeepCheckCast(java.lang.Object, boolean) ssa_builder (after) + /// CHECK-START: Final Main.testKeepCheckCast(java.lang.Object, boolean) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: <<Class:l\d+>> LoadClass /// CHECK: CheckCast [<<Phi>>,<<Class>>] @@ -43,7 +43,7 @@ public class Main { return (Final) x; } - /// CHECK-START: void Main.testKeepInstanceOf(java.lang.Object, boolean) ssa_builder (after) + /// CHECK-START: void Main.testKeepInstanceOf(java.lang.Object, boolean) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: <<Class:l\d+>> LoadClass /// CHECK: InstanceOf [<<Phi>>,<<Class>>] @@ -65,7 +65,7 @@ public class Main { } } - /// CHECK-START: java.lang.String Main.testNoInline(java.lang.Object, boolean) ssa_builder (after) + /// CHECK-START: java.lang.String Main.testNoInline(java.lang.Object, boolean) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: <<NC:l\d+>> NullCheck [<<Phi>>] /// CHECK: <<Ret:l\d+>> InvokeVirtual [<<NC>>] method_name:java.lang.Object.toString diff --git a/test/549-checker-types-merge/src/Main.java b/test/549-checker-types-merge/src/Main.java index 917073b1c9..51af3cff10 100644 --- a/test/549-checker-types-merge/src/Main.java +++ b/test/549-checker-types-merge/src/Main.java @@ -38,14 +38,14 @@ class ClassImplementsInterfaceA extends ClassSuper implements InterfaceA {} public class Main { - /// CHECK-START: java.lang.Object Main.testMergeNullContant(boolean) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeNullContant(boolean) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:Main /// CHECK: Return [<<Phi>>] private Object testMergeNullContant(boolean cond) { return cond ? null : new Main(); } - /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassExtendsA, ClassExtendsB) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassExtendsA, ClassExtendsB) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:ClassSuper /// CHECK: Return [<<Phi>>] private Object testMergeClasses(boolean cond, ClassExtendsA a, ClassExtendsB b) { @@ -53,7 +53,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassExtendsA, ClassSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassExtendsA, ClassSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:ClassSuper /// CHECK: Return [<<Phi>>] private Object testMergeClasses(boolean cond, ClassExtendsA a, ClassSuper b) { @@ -61,7 +61,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassSuper, ClassSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassSuper, ClassSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:ClassSuper /// CHECK: Return [<<Phi>>] private Object testMergeClasses(boolean cond, ClassSuper a, ClassSuper b) { @@ -69,7 +69,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassOtherSuper, ClassSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeClasses(boolean, ClassOtherSuper, ClassSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: Return [<<Phi>>] private Object testMergeClasses(boolean cond, ClassOtherSuper a, ClassSuper b) { @@ -77,7 +77,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeClassWithInterface(boolean, ClassImplementsInterfaceA, InterfaceSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeClassWithInterface(boolean, ClassImplementsInterfaceA, InterfaceSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:InterfaceSuper /// CHECK: Return [<<Phi>>] private Object testMergeClassWithInterface(boolean cond, ClassImplementsInterfaceA a, InterfaceSuper b) { @@ -85,7 +85,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeClassWithInterface(boolean, ClassSuper, InterfaceSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeClassWithInterface(boolean, ClassSuper, InterfaceSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: Return [<<Phi>>] private Object testMergeClassWithInterface(boolean cond, ClassSuper a, InterfaceSuper b) { @@ -93,7 +93,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceExtendsA, InterfaceSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceExtendsA, InterfaceSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:InterfaceSuper /// CHECK: Return [<<Phi>>] private Object testMergeInterfaces(boolean cond, InterfaceExtendsA a, InterfaceSuper b) { @@ -101,7 +101,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceSuper, InterfaceSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceSuper, InterfaceSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:InterfaceSuper /// CHECK: Return [<<Phi>>] private Object testMergeInterfaces(boolean cond, InterfaceSuper a, InterfaceSuper b) { @@ -109,7 +109,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceExtendsA, InterfaceExtendsB) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceExtendsA, InterfaceExtendsB) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: Return [<<Phi>>] private Object testMergeInterfaces(boolean cond, InterfaceExtendsA a, InterfaceExtendsB b) { @@ -117,7 +117,7 @@ public class Main { return cond ? a : b; } - /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceSuper, InterfaceOtherSuper) ssa_builder (after) + /// CHECK-START: java.lang.Object Main.testMergeInterfaces(boolean, InterfaceSuper, InterfaceOtherSuper) builder (after) /// CHECK: <<Phi:l\d+>> Phi klass:java.lang.Object /// CHECK: Return [<<Phi>>] private Object testMergeInterfaces(boolean cond, InterfaceSuper a, InterfaceOtherSuper b) { diff --git a/test/550-checker-regression-wide-store/smali/TestCase.smali b/test/550-checker-regression-wide-store/smali/TestCase.smali index 7974d56a8f..9133c82365 100644 --- a/test/550-checker-regression-wide-store/smali/TestCase.smali +++ b/test/550-checker-regression-wide-store/smali/TestCase.smali @@ -25,7 +25,7 @@ # Test storing into the high vreg of a wide pair. This scenario has runtime # behaviour implications so we run it from Main.main. -## CHECK-START: int TestCase.invalidateLow(long) ssa_builder (after) +## CHECK-START: int TestCase.invalidateLow(long) builder (after) ## CHECK-DAG: <<Cst0:i\d+>> IntConstant 0 ## CHECK-DAG: <<Arg:j\d+>> ParameterValue ## CHECK-DAG: <<Cast:i\d+>> TypeConversion [<<Arg>>] @@ -53,7 +53,7 @@ # Test that storing a wide invalidates the value in the high vreg. This # cannot be detected from runtime so we only test the environment with Checker. -## CHECK-START: void TestCase.invalidateHigh1(long) ssa_builder (after) +## CHECK-START: void TestCase.invalidateHigh1(long) builder (after) ## CHECK-DAG: <<Arg:j\d+>> ParameterValue ## CHECK-DAG: InvokeStaticOrDirect method_name:java.lang.System.nanoTime env:[[<<Arg>>,_,<<Arg>>,_]] @@ -67,7 +67,7 @@ .end method -## CHECK-START: void TestCase.invalidateHigh2(long) ssa_builder (after) +## CHECK-START: void TestCase.invalidateHigh2(long) builder (after) ## CHECK-DAG: <<Arg:j\d+>> ParameterValue ## CHECK-DAG: InvokeStaticOrDirect method_name:java.lang.System.nanoTime env:[[<<Arg>>,_,_,<<Arg>>,_]] diff --git a/test/552-checker-primitive-typeprop/smali/ArrayGet.smali b/test/552-checker-primitive-typeprop/smali/ArrayGet.smali index 042fa0c80c..de3229064c 100644 --- a/test/552-checker-primitive-typeprop/smali/ArrayGet.smali +++ b/test/552-checker-primitive-typeprop/smali/ArrayGet.smali @@ -19,10 +19,10 @@ # Test phi with fixed-type ArrayGet as an input and a matching second input. # The phi should be typed accordingly. -## CHECK-START: void ArrayGet.matchingFixedType(float[], float) ssa_builder (after) +## CHECK-START: void ArrayGet.matchingFixedType(float[], float) builder (after) ## CHECK-NOT: Phi -## CHECK-START-DEBUGGABLE: void ArrayGet.matchingFixedType(float[], float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void ArrayGet.matchingFixedType(float[], float) builder (after) ## CHECK-DAG: <<Arg1:f\d+>> ParameterValue ## CHECK-DAG: <<Aget:f\d+>> ArrayGet ## CHECK-DAG: {{f\d+}} Phi [<<Aget>>,<<Arg1>>] reg:0 @@ -49,10 +49,10 @@ # Test phi with fixed-type ArrayGet as an input and a conflicting second input. # The phi should be eliminated due to the conflict. -## CHECK-START: void ArrayGet.conflictingFixedType(float[], int) ssa_builder (after) +## CHECK-START: void ArrayGet.conflictingFixedType(float[], int) builder (after) ## CHECK-NOT: Phi -## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFixedType(float[], int) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFixedType(float[], int) builder (after) ## CHECK-NOT: Phi .method public static conflictingFixedType([FI)V .registers 8 @@ -76,13 +76,13 @@ # Same test as the one above, only this time tests that type of ArrayGet is not # changed. -## CHECK-START: void ArrayGet.conflictingFixedType2(int[], float) ssa_builder (after) +## CHECK-START: void ArrayGet.conflictingFixedType2(int[], float) builder (after) ## CHECK-NOT: Phi -## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFixedType2(int[], float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFixedType2(int[], float) builder (after) ## CHECK-NOT: Phi -## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFixedType2(int[], float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFixedType2(int[], float) builder (after) ## CHECK: {{i\d+}} ArrayGet .method public static conflictingFixedType2([IF)V .registers 8 @@ -107,10 +107,10 @@ # Test phi with free-type ArrayGet as an input and a matching second input. # The phi should be typed accordingly. -## CHECK-START: void ArrayGet.matchingFreeType(float[], float) ssa_builder (after) +## CHECK-START: void ArrayGet.matchingFreeType(float[], float) builder (after) ## CHECK-NOT: Phi -## CHECK-START-DEBUGGABLE: void ArrayGet.matchingFreeType(float[], float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void ArrayGet.matchingFreeType(float[], float) builder (after) ## CHECK-DAG: <<Arg1:f\d+>> ParameterValue ## CHECK-DAG: <<Aget:f\d+>> ArrayGet ## CHECK-DAG: ArraySet [{{l\d+}},{{i\d+}},<<Aget>>] @@ -139,10 +139,10 @@ # The phi will be kept and typed according to the second input despite the # conflict. -## CHECK-START: void ArrayGet.conflictingFreeType(int[], float) ssa_builder (after) +## CHECK-START: void ArrayGet.conflictingFreeType(int[], float) builder (after) ## CHECK-NOT: Phi -## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFreeType(int[], float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void ArrayGet.conflictingFreeType(int[], float) builder (after) ## CHECK-NOT: Phi .method public static conflictingFreeType([IF)V @@ -169,7 +169,7 @@ # case uses ArrayGet indirectly through two phis. It also creates an unused # conflicting phi which should not be preserved. -## CHECK-START: void ArrayGet.conflictingPhiUses(int[], float, boolean, boolean, boolean) ssa_builder (after) +## CHECK-START: void ArrayGet.conflictingPhiUses(int[], float, boolean, boolean, boolean) builder (after) ## CHECK: InvokeStaticOrDirect env:[[{{i\d+}},{{i\d+}},_,{{i\d+}},{{.*}} .method public static conflictingPhiUses([IFZZZ)V @@ -209,10 +209,10 @@ # another. The situation needs to be resolved so that only one instruction # remains. -## CHECK-START: void ArrayGet.typedVsUntypedPhiUse(float[], float, boolean, boolean) ssa_builder (after) +## CHECK-START: void ArrayGet.typedVsUntypedPhiUse(float[], float, boolean, boolean) builder (after) ## CHECK: {{f\d+}} ArrayGet -## CHECK-START: void ArrayGet.typedVsUntypedPhiUse(float[], float, boolean, boolean) ssa_builder (after) +## CHECK-START: void ArrayGet.typedVsUntypedPhiUse(float[], float, boolean, boolean) builder (after) ## CHECK-NOT: {{i\d+}} ArrayGet .method public static typedVsUntypedPhiUse([FFZZ)V diff --git a/test/552-checker-primitive-typeprop/smali/ArraySet.smali b/test/552-checker-primitive-typeprop/smali/ArraySet.smali index 57d8606abb..087460aef2 100644 --- a/test/552-checker-primitive-typeprop/smali/ArraySet.smali +++ b/test/552-checker-primitive-typeprop/smali/ArraySet.smali @@ -19,7 +19,7 @@ # Note that the input is a Phi to make sure primitive type propagation is re-run # on the replaced inputs. -## CHECK-START: void ArraySet.ambiguousSet(int[], float[], boolean) ssa_builder (after) +## CHECK-START: void ArraySet.ambiguousSet(int[], float[], boolean) builder (after) ## CHECK-DAG: <<IntArray:l\d+>> ParameterValue klass:int[] ## CHECK-DAG: <<IntA:i\d+>> IntConstant 0 ## CHECK-DAG: <<IntB:i\d+>> IntConstant 1073741824 diff --git a/test/552-checker-primitive-typeprop/smali/SsaBuilder.smali b/test/552-checker-primitive-typeprop/smali/SsaBuilder.smali index 395feaaf61..0d067ed1ca 100644 --- a/test/552-checker-primitive-typeprop/smali/SsaBuilder.smali +++ b/test/552-checker-primitive-typeprop/smali/SsaBuilder.smali @@ -22,7 +22,7 @@ # otherwise running the code with an array short enough to throw will crash at # runtime because v0 is undefined. -## CHECK-START: int SsaBuilder.environmentPhi(boolean, int[]) ssa_builder (after) +## CHECK-START: int SsaBuilder.environmentPhi(boolean, int[]) builder (after) ## CHECK-DAG: <<Cst0:f\d+>> FloatConstant 0 ## CHECK-DAG: <<Cst2:f\d+>> FloatConstant 2 ## CHECK-DAG: <<Phi:f\d+>> Phi [<<Cst0>>,<<Cst2>>] diff --git a/test/552-checker-primitive-typeprop/smali/TypePropagation.smali b/test/552-checker-primitive-typeprop/smali/TypePropagation.smali index 58682a1923..d34e43e160 100644 --- a/test/552-checker-primitive-typeprop/smali/TypePropagation.smali +++ b/test/552-checker-primitive-typeprop/smali/TypePropagation.smali @@ -15,7 +15,7 @@ .class public LTypePropagation; .super Ljava/lang/Object; -## CHECK-START-DEBUGGABLE: void TypePropagation.mergeDeadPhi(boolean, boolean, int, float, float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.mergeDeadPhi(boolean, boolean, int, float, float) builder (after) ## CHECK-NOT: Phi .method public static mergeDeadPhi(ZZIFF)V .registers 8 @@ -34,7 +34,7 @@ return-void .end method -## CHECK-START-DEBUGGABLE: void TypePropagation.mergeSameType(boolean, int, int) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.mergeSameType(boolean, int, int) builder (after) ## CHECK: {{i\d+}} Phi ## CHECK-NOT: Phi .method public static mergeSameType(ZII)V @@ -47,7 +47,7 @@ return-void .end method -## CHECK-START-DEBUGGABLE: void TypePropagation.mergeVoidInput(boolean, boolean, int, int) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.mergeVoidInput(boolean, boolean, int, int) builder (after) ## CHECK: {{i\d+}} Phi ## CHECK: {{i\d+}} Phi ## CHECK-NOT: Phi @@ -64,7 +64,7 @@ return-void .end method -## CHECK-START-DEBUGGABLE: void TypePropagation.mergeDifferentSize(boolean, int, long) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.mergeDifferentSize(boolean, int, long) builder (after) ## CHECK-NOT: Phi .method public static mergeDifferentSize(ZIJ)V .registers 8 @@ -76,7 +76,7 @@ return-void .end method -## CHECK-START-DEBUGGABLE: void TypePropagation.mergeRefFloat(boolean, float, java.lang.Object) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.mergeRefFloat(boolean, float, java.lang.Object) builder (after) ## CHECK-NOT: Phi .method public static mergeRefFloat(ZFLjava/lang/Object;)V .registers 8 @@ -88,7 +88,7 @@ return-void .end method -## CHECK-START-DEBUGGABLE: void TypePropagation.mergeIntFloat_Success(boolean, float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.mergeIntFloat_Success(boolean, float) builder (after) ## CHECK: {{f\d+}} Phi ## CHECK-NOT: Phi .method public static mergeIntFloat_Success(ZF)V @@ -101,7 +101,7 @@ return-void .end method -## CHECK-START-DEBUGGABLE: void TypePropagation.mergeIntFloat_Fail(boolean, int, float) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.mergeIntFloat_Fail(boolean, int, float) builder (after) ## CHECK-NOT: Phi .method public static mergeIntFloat_Fail(ZIF)V .registers 8 @@ -113,7 +113,7 @@ return-void .end method -## CHECK-START-DEBUGGABLE: void TypePropagation.updateAllUsersOnConflict(boolean, boolean, int, float, int) ssa_builder (after) +## CHECK-START-DEBUGGABLE: void TypePropagation.updateAllUsersOnConflict(boolean, boolean, int, float, int) builder (after) ## CHECK-NOT: Phi .method public static updateAllUsersOnConflict(ZZIFI)V .registers 8 diff --git a/test/554-checker-rtp-checkcast/src/Main.java b/test/554-checker-rtp-checkcast/src/Main.java index 607f71afb5..5bf766ff4e 100644 --- a/test/554-checker-rtp-checkcast/src/Main.java +++ b/test/554-checker-rtp-checkcast/src/Main.java @@ -19,7 +19,7 @@ public class Main { public static Object returnIntArray() { return new int[10]; } - /// CHECK-START: void Main.boundTypeForMergingPhi() ssa_builder (after) + /// CHECK-START: void Main.boundTypeForMergingPhi() builder (after) /// CHECK-DAG: ArraySet [<<NC:l\d+>>,{{i\d+}},{{i\d+}}] /// CHECK-DAG: <<NC>> NullCheck [<<Phi:l\d+>>] /// CHECK-DAG: <<Phi>> Phi klass:int[] @@ -32,7 +32,7 @@ public class Main { array[0] = 14; } - /// CHECK-START: void Main.boundTypeForLoopPhi() ssa_builder (after) + /// CHECK-START: void Main.boundTypeForLoopPhi() builder (after) /// CHECK-DAG: ArraySet [<<NC:l\d+>>,{{i\d+}},{{i\d+}}] /// CHECK-DAG: <<NC>> NullCheck [<<Phi:l\d+>>] /// CHECK-DAG: <<Phi>> Phi klass:int[] @@ -50,7 +50,7 @@ public class Main { array[0] = 14; } - /// CHECK-START: void Main.boundTypeForCatchPhi() ssa_builder (after) + /// CHECK-START: void Main.boundTypeForCatchPhi() builder (after) /// CHECK-DAG: ArraySet [<<NC:l\d+>>,{{i\d+}},{{i\d+}}] /// CHECK-DAG: <<NC>> NullCheck [<<Phi:l\d+>>] /// CHECK-DAG: <<Phi>> Phi is_catch_phi:true klass:int[] diff --git a/test/557-checker-ref-equivalent/smali/TestCase.smali b/test/557-checker-ref-equivalent/smali/TestCase.smali index 24729572c4..1347554aad 100644 --- a/test/557-checker-ref-equivalent/smali/TestCase.smali +++ b/test/557-checker-ref-equivalent/smali/TestCase.smali @@ -16,7 +16,7 @@ .super Ljava/lang/Object; -## CHECK-START: void TestCase.testIntRefEquivalent() ssa_builder (after) +## CHECK-START: void TestCase.testIntRefEquivalent() builder (after) ## CHECK-NOT: Phi .method public static testIntRefEquivalent()V .registers 4 diff --git a/test/557-checker-ref-equivalent/src/Main.java b/test/557-checker-ref-equivalent/src/Main.java index a970af5cdf..9323757d92 100644 --- a/test/557-checker-ref-equivalent/src/Main.java +++ b/test/557-checker-ref-equivalent/src/Main.java @@ -16,7 +16,7 @@ public class Main { - /// CHECK-START: void Main.testRedundantPhiCycle(boolean) ssa_builder (after) + /// CHECK-START: void Main.testRedundantPhiCycle(boolean) builder (after) /// CHECK-NOT: Phi private void testRedundantPhiCycle(boolean cond) { Object o = null; @@ -28,7 +28,7 @@ public class Main { } } - /// CHECK-START: void Main.testLoopPhisWithNullAndCrossUses(boolean) ssa_builder (after) + /// CHECK-START: void Main.testLoopPhisWithNullAndCrossUses(boolean) builder (after) /// CHECK-NOT: Phi private void testLoopPhisWithNullAndCrossUses(boolean cond) { Main a = null; diff --git a/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali b/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali index 971ad84241..7ce60a304b 100644 --- a/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali +++ b/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali @@ -323,7 +323,7 @@ # - / \- # irreducible_loop_back_edge loop_within_back_edge # -## CHECK-START: void IrreducibleLoop.analyze1(int) ssa_builder (after) +## CHECK-START: void IrreducibleLoop.analyze1(int) builder (after) ## CHECK-DAG: Goto loop:<<OuterLoop:B\d+>> outer_loop:none irreducible:true ## CHECK-DAG: Goto outer_loop:<<OuterLoop>> irreducible:false .method public static analyze1(I)V @@ -371,7 +371,7 @@ # exit \- / # irreducible_loop_body # -## CHECK-START: void IrreducibleLoop.analyze2(int) ssa_builder (after) +## CHECK-START: void IrreducibleLoop.analyze2(int) builder (after) ## CHECK-DAG: Goto outer_loop:none irreducible:false ## CHECK-DAG: Goto outer_loop:none irreducible:true .method public static analyze2(I)V @@ -418,7 +418,7 @@ # | # exit # -## CHECK-START: void IrreducibleLoop.analyze3(int) ssa_builder (after) +## CHECK-START: void IrreducibleLoop.analyze3(int) builder (after) ## CHECK-DAG: Goto loop:<<OuterLoop:B\d+>> outer_loop:none irreducible:true ## CHECK-DAG: Goto outer_loop:<<OuterLoop>> irreducible:true .method public static analyze3(I)V @@ -467,7 +467,7 @@ # | # exit # -## CHECK-START: void IrreducibleLoop.analyze4(int) ssa_builder (after) +## CHECK-START: void IrreducibleLoop.analyze4(int) builder (after) ## CHECK-DAG: Goto loop:<<OuterLoop:B\d+>> outer_loop:none irreducible:true ## CHECK-DAG: Goto outer_loop:<<OuterLoop>> irreducible:true .method public static analyze4(I)V @@ -519,7 +519,7 @@ # | # exit # -## CHECK-START: void IrreducibleLoop.analyze5(int) ssa_builder (after) +## CHECK-START: void IrreducibleLoop.analyze5(int) builder (after) ## CHECK-DAG: Goto loop:<<OuterLoop:B\d+>> outer_loop:none irreducible:true ## CHECK-DAG: Goto outer_loop:<<OuterLoop>> irreducible:true .method public static analyze5(I)V diff --git a/test/559-checker-rtp-ifnotnull/src/Main.java b/test/559-checker-rtp-ifnotnull/src/Main.java index 8f401292da..2dc5666e18 100644 --- a/test/559-checker-rtp-ifnotnull/src/Main.java +++ b/test/559-checker-rtp-ifnotnull/src/Main.java @@ -17,7 +17,7 @@ public class Main { - /// CHECK-START: void Main.boundTypeForIfNotNull() ssa_builder (after) + /// CHECK-START: void Main.boundTypeForIfNotNull() builder (after) /// CHECK-DAG: <<Method:(i|j)\d+>> CurrentMethod /// CHECK-DAG: <<Null:l\d+>> NullConstant /// CHECK-DAG: <<Cst5:i\d+>> IntConstant 5 |