xref: /llvm-project/clang/test/CodeGenCoroutines/coro-function-try-block.cpp (revision f78688134026686288a8d310b493d9327753a022)
1e00a8d08SMatthias Braun // RUN: %clang_cc1 -std=c++20 -triple=x86_64-- -emit-llvm -fcxx-exceptions \
2e00a8d08SMatthias Braun // RUN:            -disable-llvm-passes %s -o - | FileCheck %s
3e00a8d08SMatthias Braun 
4e00a8d08SMatthias Braun #include "Inputs/coroutine.h"
5e00a8d08SMatthias Braun 
6e00a8d08SMatthias Braun struct task {
7e00a8d08SMatthias Braun   struct promise_type {
8e00a8d08SMatthias Braun     task get_return_object();
9e00a8d08SMatthias Braun     std::suspend_never initial_suspend();
10e00a8d08SMatthias Braun     std::suspend_never final_suspend() noexcept;
11e00a8d08SMatthias Braun     void return_void();
12e00a8d08SMatthias Braun     void unhandled_exception() noexcept;
13e00a8d08SMatthias Braun   };
14e00a8d08SMatthias Braun };
15e00a8d08SMatthias Braun 
f()16e00a8d08SMatthias Braun task f() try {
17e00a8d08SMatthias Braun   co_return;
18e00a8d08SMatthias Braun } catch(...) {
19e00a8d08SMatthias Braun }
20e00a8d08SMatthias Braun 
21e00a8d08SMatthias Braun // CHECK-LABEL: define{{.*}} void @_Z1fv(
22*f7868813Sfpasserby // CHECK: call void @llvm.coro.await.suspend.void(
23e00a8d08SMatthias Braun // CHECK: call void @_ZN4task12promise_type11return_voidEv(
24