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