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 Brauntask 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