[clang] [llvm] [Clang] C++20 Coroutines: Introduce Frontend Attribute [[clang::coro_await_elidable]] (PR #99282)
Chuanqi Xu via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 6 23:58:41 PDT 2024
================
@@ -8119,6 +8119,35 @@ but do not pass them to the underlying coroutine or pass them by value.
}];
}
+def CoroAwaitElidableDoc : Documentation {
+ let Category = DocCatDecl;
+ let Content = [{
+The ``[[clang::coro_await_elidable]]`` is a class attribute which can be applied
+to a coroutine return type.
+
+When a coroutine function that returns such a type calls another coroutine function,
+the compiler performs heap allocation elision when the call to the coroutine function
----------------
ChuanqiXu9 wrote:
I feel better to explain the heap allocation elision here. I'd like to say:
in this case, the coroutine frame for the callee will be a local variable within the enclosing braces in the caller's stack frame. And the local variable, like other variables in coroutines, may be collected into the coroutine frame, which may be allocated on the heap.
https://github.com/llvm/llvm-project/pull/99282
More information about the cfe-commits
mailing list