[Clang] Preserve coroutine parameter referenced state (#70973)
This PR is proposing a fix for https://github.com/llvm/llvm-project/issues/65971. Previously, given a coroutine like this ``` task foo(int a) { co_return; } ``` Parameter `a` is never used. However, because C++ coroutines move constructs the variable to a heap allocated coroutine activation frame, we considered all parameters referenced. When diagnosing unused parameters, we cannot distinguish if the variable reference was due to coroutine parameter moves. Compiler Explorer shows that GCC warns against this case correctly, but clang does not: https://godbolt.org/z/Wo7dfqeaf This patch addresses this issue by preserving the original `ParmVarDecl`'s `Referenced` state.
Loading
Please sign in to comment