diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2016-04-29 04:56:12 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2016-04-29 04:56:12 +0000 |
| commit | cd24bb1d3a1957854418f9d14e274304553fa9d1 (patch) | |
| tree | c83a16b5f977c57522e2bbc390aba90867d1706f /llvm/test/Transforms | |
| parent | b805723294627cd7a292a0166563188571f4d48d (diff) | |
| download | bcm5719-llvm-cd24bb1d3a1957854418f9d14e274304553fa9d1.tar.gz bcm5719-llvm-cd24bb1d3a1957854418f9d14e274304553fa9d1.zip | |
[ArgumentPromotion] Propagate operand bundles to promoted call sites
We neglected to transfer operand bundles when performing argument
promotion.
This fixes PR27568.
llvm-svn: 267986
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/ArgumentPromotion/pr27568.ll | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/Transforms/ArgumentPromotion/pr27568.ll b/llvm/test/Transforms/ArgumentPromotion/pr27568.ll new file mode 100644 index 00000000000..648317aee0d --- /dev/null +++ b/llvm/test/Transforms/ArgumentPromotion/pr27568.ll @@ -0,0 +1,31 @@ +; RUN: opt -S -argpromotion < %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 %out unwind label %cpad + +out: + ret void + +cpad: + %pad = cleanuppad within none [] + call void @callee(i8* null) [ "funclet"(token %pad) ] + cleanupret from %pad unwind to caller +} + +; CHECK-LABEL: define void @test1( +; CHECK: %[[pad:.*]] = cleanuppad within none [] +; CHECK-NEXT: call void @callee() [ "funclet"(token %[[pad]]) ] +; CHECK-NEXT: cleanupret from %[[pad]] unwind to caller + +declare void @thunk() + +declare i32 @__CxxFrameHandler3(...) |

