================
@@ -15845,7 +15845,7 @@ static void diagnoseImplicitlyRetainedSelf(Sema &S) {
}
void Sema::CheckCoroutineWrapper(FunctionDecl *FD) {
- if (!FD)
+ if (!FD || FD->hasSkippedBody())
----------------
ilya-biryukov wrote:
Suggestion: a comment would be appropriate here, e.g. `// if we skip function
body, we can't tell if a function is a coroutine`.
More serious request is to move this check up the call stack where we inspect
`FSI` and call `isCoroutine()`. `CheckCoroutineWrapper` does not even look if
the function is a coroutine or not, it merely looks at an attribute, which is
available even if we skip the function body.
It's the calling code that should make sure `CheckCoroutineWrapper` should not
be called for coroutines, so it's caller's responsibility to ensure this
function is not called when it can't tell if a function is a coroutine or not.
https://github.com/llvm/llvm-project/pull/76729
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits