diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-12-15 21:27:27 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-12-15 21:27:27 +0000 |
| commit | 3bb88c0210d955628f0b0daf5da52769815f3f25 (patch) | |
| tree | 39b3e9cd4150a23f9e634dfa9024c6713635c49d /llvm/test/CodeGen/X86/seh-except-finally.ll | |
| parent | 2a27fc40a85d4d962f8b95422b10aefa646aee20 (diff) | |
| download | bcm5719-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.ll | 4 |
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 |

