summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp
diff options
context:
space:
mode:
authorBrian Gesiak <modocache@gmail.com>2018-05-04 14:02:37 +0000
committerBrian Gesiak <modocache@gmail.com>2018-05-04 14:02:37 +0000
commitea9144e8184d4dd208347cc1c961f8a0ebfa1296 (patch)
tree4964e29c6b890253174258eaead6e668edce18b9 /clang/test/CodeGenCoroutines/coro-unhandled-exception.cpp
parentaf73d2bdd923896303a7adef61d04f3e3813b56a (diff)
downloadbcm5719-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.cpp4
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(
OpenPOWER on IntegriCloud