diff options
Diffstat (limited to 'test/2243-checker-not-inline-into-throw/src/Main.java')
-rw-r--r-- | test/2243-checker-not-inline-into-throw/src/Main.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/test/2243-checker-not-inline-into-throw/src/Main.java b/test/2243-checker-not-inline-into-throw/src/Main.java index 6f1280c026..f1d60a129d 100644 --- a/test/2243-checker-not-inline-into-throw/src/Main.java +++ b/test/2243-checker-not-inline-into-throw/src/Main.java @@ -32,14 +32,18 @@ public class Main { // Empty methods are easy to inline anywhere. private static void easyToInline() {} private static void $inline$easyToInline() {} + private static void twoLevelEasyToInline() { easyToInline(); } /// CHECK-START: int Main.$noinline$testEndsWithThrow() inliner (before) - /// CHECK: InvokeStaticOrDirect method_name:Main.easyToInline + /// CHECK: InvokeStaticOrDirect method_name:Main.twoLevelEasyToInline /// CHECK-START: int Main.$noinline$testEndsWithThrow() inliner (after) - /// CHECK: InvokeStaticOrDirect method_name:Main.easyToInline + /// CHECK: InvokeStaticOrDirect method_name:Main.twoLevelEasyToInline static int $noinline$testEndsWithThrow() { - easyToInline(); + // Use two level inlining to avoid a pattern match in the inliner. + // The pattern matching is deliberately done before we check if inlining is "encouraged" + // which includes checking if the block ends with a `throw`. + twoLevelEasyToInline(); throw new Error(""); } |