| // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++20 \ |
| // RUN: -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s |
| // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++20 \ |
| // RUN: -O3 -emit-llvm %s -o - | FileCheck %s --check-prefix=CHECK-O |
| #include "Inputs/coroutine.h" |
| suspend_always initial_suspend(); |
| suspend_always final_suspend() noexcept; |
| void unhandled_exception(); |
| std::coroutine_handle<> handle; |
| struct [[clang::coro_only_destroy_when_complete]] A { |
| using promise_type = A_promise_type; |
| A(std::coroutine_handle<>); |
| std::coroutine_handle<promise_type> handle; |
| // CHECK: define{{.*}}@_Z3foov({{.*}}) #[[ATTR_NUM:[0-9]+]] |
| // CHECK: attributes #[[ATTR_NUM]] = {{.*}}coro_only_destroy_when_complete |
| // CHECK-O: define{{.*}}@_Z3foov.destroy |