summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/seh-except-finally.ll
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-12-15 21:27:27 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-12-15 21:27:27 +0000
commit3bb88c0210d955628f0b0daf5da52769815f3f25 (patch)
tree39b3e9cd4150a23f9e634dfa9024c6713635c49d /llvm/test/CodeGen/X86/seh-except-finally.ll
parent2a27fc40a85d4d962f8b95422b10aefa646aee20 (diff)
downloadbcm5719-llvm-3bb88c0210d955628f0b0daf5da52769815f3f25.tar.gz
bcm5719-llvm-3bb88c0210d955628f0b0daf5da52769815f3f25.zip
[WinEH] Use operand bundles to describe call sites
SimplifyCFG allows tail merging with code which terminates in unreachable which, in turn, makes it possible for an invoke to end up in a funclet which it was not originally part of. Using operand bundles on invokes allows us to determine whether or not an invoke was part of a funclet in the source program. Furthermore, it allows us to unambiguously answer questions about the legality of inlining into call sites which the personality may have trouble with. Differential Revision: http://reviews.llvm.org/D15517 llvm-svn: 255674
Diffstat (limited to 'llvm/test/CodeGen/X86/seh-except-finally.ll')
-rw-r--r--llvm/test/CodeGen/X86/seh-except-finally.ll4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/X86/seh-except-finally.ll b/llvm/test/CodeGen/X86/seh-except-finally.ll
index b252b5b1248..c15ecfcd77b 100644
--- a/llvm/test/CodeGen/X86/seh-except-finally.ll
+++ b/llvm/test/CodeGen/X86/seh-except-finally.ll
@@ -51,7 +51,7 @@ invoke.cont2: ; preds = %invoke.cont
__finally: ; preds = %entry
%cleanuppad = cleanuppad within none []
%locals = call i8* @llvm.localaddress()
- invoke void @"\01?fin$0@0@use_both@@"(i1 zeroext true, i8* %locals) #5
+ invoke void @"\01?fin$0@0@use_both@@"(i1 zeroext true, i8* %locals) #5 [ "funclet"(token %cleanuppad) ]
to label %invoke.cont3 unwind label %catch.dispatch
invoke.cont3: ; preds = %__finally
@@ -62,7 +62,7 @@ catch.dispatch: ; preds = %invoke.cont3, %lpad
__except: ; preds = %catch.dispatch
%catchpad = catchpad within %cs1 [i8* bitcast (i32 (i8*, i8*)* @"\01?filt$0@0@use_both@@" to i8*)]
- %call = call i32 @puts(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"\01??_C@_08MLCMLGHM@__except?$AA@", i32 0, i32 0))
+ %call = call i32 @puts(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"\01??_C@_08MLCMLGHM@__except?$AA@", i32 0, i32 0)) [ "funclet"(token %catchpad) ]
catchret from %catchpad to label %__try.cont
__try.cont: ; preds = %__except, %invoke.cont2
OpenPOWER on IntegriCloud