diff options
Diffstat (limited to 'llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll')
-rw-r--r-- | llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll b/llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll new file mode 100644 index 00000000000..d3d3c5a8d1a --- /dev/null +++ b/llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll @@ -0,0 +1,33 @@ +; RUN: opt %s -rewrite-statepoints-for-gc -rs4gc-use-deopt-bundles -S | FileCheck %s + +declare void @some_call(i64 addrspace(1)*) + +declare i32 @"dummy_personality_function"() + +define i64 addrspace(1)* @test(i64 addrspace(1)* %obj, i64 addrspace(1)* %obj1) + gc "statepoint-example" + personality i32 ()* @"dummy_personality_function" { +entry: + invoke void @some_call(i64 addrspace(1)* %obj) [ "deopt"() ] + to label %second_invoke unwind label %exceptional_return + +second_invoke: ; preds = %entry + invoke void @some_call(i64 addrspace(1)* %obj) [ "deopt"() ] + to label %normal_return unwind label %exceptional_return + +normal_return: ; preds = %second_invoke + ret i64 addrspace(1)* %obj + +; CHECK: exceptional_return1: +; CHECK-NEXT: %lpad2 = landingpad token + +; CHECK: exceptional_return.split-lp: +; CHECK-NEXT: %lpad.split-lp = landingpad token + +; CHECK: exceptional_return: +; CHECK-NOT: phi token + +exceptional_return: ; preds = %second_invoke, %entry + %lpad = landingpad token cleanup + ret i64 addrspace(1)* %obj1 +} |