diff options
Diffstat (limited to 'test/Transforms/DeadArgElim/funclet.ll')
| -rw-r--r-- | test/Transforms/DeadArgElim/funclet.ll | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/Transforms/DeadArgElim/funclet.ll b/test/Transforms/DeadArgElim/funclet.ll new file mode 100644 index 0000000000000..36b0d3aa626d6 --- /dev/null +++ b/test/Transforms/DeadArgElim/funclet.ll @@ -0,0 +1,29 @@ +; RUN: opt -S -deadargelim < %s | FileCheck %s +target triple = "x86_64-pc-windows-msvc" + +define internal void @callee(i8*) { +entry: + call void @thunk() + ret void +} + +define void @test1() personality i32 (...)* @__CxxFrameHandler3 { +entry: + invoke void @thunk() + to label %good1 unwind label %bad1 + +good1: ; preds = %entry-block + ret void + +bad1: ; preds = %entry-block + %pad1 = cleanuppad within none [] + call void @callee(i8* null) [ "funclet"(token %pad1) ] + cleanupret from %pad1 unwind to caller +} +; CHECK-LABEL: define void @test1( +; CHECK: %[[pad:.*]] = cleanuppad within none [] +; CHECK-NEXT: call void @callee() [ "funclet"(token %[[pad]]) ] + +declare void @thunk() + +declare i32 @__CxxFrameHandler3(...) |
