diff options
author | Brian Gesiak <modocache@gmail.com> | 2018-05-04 14:02:37 +0000 |
---|---|---|
committer | Brian Gesiak <modocache@gmail.com> | 2018-05-04 14:02:37 +0000 |
commit | ea9144e8184d4dd208347cc1c961f8a0ebfa1296 (patch) | |
tree | 4964e29c6b890253174258eaead6e668edce18b9 /clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp | |
parent | af73d2bdd923896303a7adef61d04f3e3813b56a (diff) | |
download | bcm5719-llvm-ea9144e8184d4dd208347cc1c961f8a0ebfa1296.tar.gz bcm5719-llvm-ea9144e8184d4dd208347cc1c961f8a0ebfa1296.zip |
[Coroutines] Catch exceptions in await_resume
Summary:
http://wg21.link/P0664r2 section "Evolution/Core Issues 24" describes a
proposed change to Coroutines TS that would have any exceptions thrown
after the initial suspend point of a coroutine be caught by the handler
specified by the promise type's 'unhandled_exception' member function.
This commit provides a sample implementation of the specified behavior.
Test Plan: `check-clang`
Reviewers: GorNishanov, EricWF
Reviewed By: GorNishanov
Subscribers: cfe-commits, lewissbaker, eric_niebler
Differential Revision: https://reviews.llvm.org/D45860
llvm-svn: 331519
Diffstat (limited to 'clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp')
-rw-r--r-- | clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp b/clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp index 4ea00a5849b..039f02352cf 100644 --- a/clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp +++ b/clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp @@ -48,6 +48,8 @@ coro_t f() { // CHECK: [[CATCHRETDEST]]: // CHECK-NEXT: br label %[[TRYCONT:.+]] // CHECK: [[TRYCONT]]: +// CHECK-NEXT: br label %[[RESUMECONT:.+]] +// CHECK: [[RESUMECONT]]: // CHECK-NEXT: br label %[[COROFIN:.+]] // CHECK: [[COROFIN]]: // CHECK-NEXT: invoke void @"?final_suspend@promise_type@coro_t@@QEAA?AUsuspend_never@coroutines_v1@experimental@std@@XZ"( @@ -67,6 +69,8 @@ coro_t f() { // CHECK-LPAD: [[CATCHRETDEST]]: // CHECK-LPAD-NEXT: br label %[[TRYCONT:.+]] // CHECK-LPAD: [[TRYCONT]]: +// CHECK-LPAD: br label %[[RESUMECONT:.+]] +// CHECK-LPAD: [[RESUMECONT]]: // CHECK-LPAD-NEXT: br label %[[COROFIN:.+]] // CHECK-LPAD: [[COROFIN]]: // CHECK-LPAD-NEXT: invoke void @_ZN6coro_t12promise_type13final_suspendEv( |