lxfind marked an inline comment as done.
lxfind added inline comments.

================
Comment at: clang/test/SemaCXX/coroutine-final-suspend-noexcept.cpp:14
+struct coroutine_handle {
+  static coroutine_handle from_address(void *); // expected-note {{must be 
declared with 'noexcept'}}
+};
----------------
lewissbaker wrote:
> I'm not sure that we should be _requiring_ the compiler to emit an error for 
> this line.
> 
> The language specification does not require implementations to declare the 
> from_address() method as noexcept, even though Clang now requires standard 
> library implementations to declare this method as noexcept - this is an 
> additional implementation requirement that Clang is placing on standard 
> library implementations for them to be compatible with Clang's coroutines 
> implementation.
> 
> I guess this is probably ok to raise as an error, though, as most users will 
> just be using the compiler-provided implementation and both libc++/libstdc++ 
> are (currently) compatible.
`from_address` is in fact called as part of `co_await 
__promise.final_suspend()`.
Specifically, when this `co_await` is translated into a call to 
`finalSuspendObjAwaiter.await_suspend(handle)`, the handle parameter is 
obtained by calling `from_address`.
Since the specification requires that `co_await __promise.final_suspend()` 
should not be potentially throwing, it must requires `from_address` to be 
declared as `noexcept`.



Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82029/new/

https://reviews.llvm.org/D82029



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to