diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-01-23 05:41:29 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-01-23 05:41:29 +0000 |
commit | 4bf0b6b4838617764436aa5825776c9c457a2c98 (patch) | |
tree | e0fc3d252e75bdc5169e3ec420757d9e922ce486 /llvm/test | |
parent | 2d728ec55d99c04147ee86e451db26319fcd766c (diff) | |
download | bcm5719-llvm-4bf0b6b4838617764436aa5825776c9c457a2c98.tar.gz bcm5719-llvm-4bf0b6b4838617764436aa5825776c9c457a2c98.zip |
[PruneEH] FuncletPads must not have undef operands
Instead of RAUW with undef, replace the first non-token instruction with
unreachable.
This fixes PR26263.
llvm-svn: 258611
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/PruneEH/pr26263.ll | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/Transforms/PruneEH/pr26263.ll b/llvm/test/Transforms/PruneEH/pr26263.ll new file mode 100644 index 00000000000..3670f00d811 --- /dev/null +++ b/llvm/test/Transforms/PruneEH/pr26263.ll @@ -0,0 +1,30 @@ +; RUN: opt -prune-eh -S < %s | FileCheck %s +target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32" +target triple = "i386-pc-windows-msvc" + +declare void @neverthrows() nounwind + +define void @test1() personality i32 (...)* @__CxxFrameHandler3 { + invoke void @neverthrows() + to label %try.cont unwind label %cleanuppad + +try.cont: + ret void + +cleanuppad: + %cp = cleanuppad within none [] + br label %cleanupret + +cleanupret: + cleanupret from %cp unwind to caller +} + +; CHECK-LABEL: define void @test1( +; CHECK: call void @neverthrows() + +; CHECK: %[[cp:.*]] = cleanuppad within none [] +; CHECK-NEXT: unreachable + +; CHECK: cleanupret from %[[cp]] unwind to caller + +declare i32 @__CxxFrameHandler3(...) |