diff options
| author | Robert Widmann <devteam.codafi@gmail.com> | 2018-03-29 03:43:15 +0000 |
|---|---|---|
| committer | Robert Widmann <devteam.codafi@gmail.com> | 2018-03-29 03:43:15 +0000 |
| commit | 6775f52fe00bc02355075de0b190e8c50f765018 (patch) | |
| tree | 1e24f5f8390227df853409285218976884c5ca8b /llvm/test/Bindings | |
| parent | f8aa23879e4719fbb040c59276dfec8f4854f9a1 (diff) | |
| download | bcm5719-llvm-6775f52fe00bc02355075de0b190e8c50f765018.tar.gz bcm5719-llvm-6775f52fe00bc02355075de0b190e8c50f765018.zip | |
[LLVM-C] Finish exception instruction bindings
Summary:
Add support for cleanupret, catchret, catchpad, cleanuppad and catchswitch and their associated accessors.
Test is modified from SimplifyCFG because it contains many diverse usages of these instructions.
Reviewers: whitequark, deadalnix, echristo
Reviewed By: echristo
Subscribers: llvm-commits, harlanhaskins
Differential Revision: https://reviews.llvm.org/D44496
llvm-svn: 328759
Diffstat (limited to 'llvm/test/Bindings')
| -rw-r--r-- | llvm/test/Bindings/llvm-c/echo.ll | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/llvm/test/Bindings/llvm-c/echo.ll b/llvm/test/Bindings/llvm-c/echo.ll index dbe2eed910b..8c9cd7bd723 100644 --- a/llvm/test/Bindings/llvm-c/echo.ll +++ b/llvm/test/Bindings/llvm-c/echo.ll @@ -122,3 +122,38 @@ do: done: ret i32 %p } + +declare void @personalityFn() + +define void @exn() personality void ()* @personalityFn { +entry: + invoke void @decl() + to label %via.cleanup unwind label %exn.dispatch +via.cleanup: + invoke void @decl() + to label %via.catchswitch unwind label %cleanup.inner +cleanup.inner: + %cp.inner = cleanuppad within none [] + cleanupret from %cp.inner unwind label %exn.dispatch +via.catchswitch: + invoke void @decl() + to label %exit unwind label %dispatch.inner +dispatch.inner: + %cs.inner = catchswitch within none [label %pad.inner] unwind label %exn.dispatch +pad.inner: + %catch.inner = catchpad within %cs.inner [i32 0] + catchret from %catch.inner to label %exit +exn.dispatch: + %cs = catchswitch within none [label %pad1, label %pad2] unwind label %cleanup +pad1: + catchpad within %cs [i32 1] + unreachable +pad2: + catchpad within %cs [i32 2] + unreachable +cleanup: + %cp = cleanuppad within none [] + cleanupret from %cp unwind to caller +exit: + ret void +} |

