Call MarkVirtualMembersReferenced on an actual class definition
authorStephan Bergmann <sbergman@redhat.com>
Wed, 1 Mar 2023 22:29:45 +0000 (23:29 +0100)
committerStephan Bergmann <sbergman@redhat.com>
Thu, 2 Mar 2023 14:50:12 +0000 (15:50 +0100)
commitd812488d3c54c07f24d4bef79e329f17e7f19c3b
tree3454d85b8a295f24d459f0ce5aec716c7fbf1c94
parent6420daab19e8c95f2481090564508eea1996c4de
Call MarkVirtualMembersReferenced on an actual class definition

...rather than on potentially just a declaration.

Without the fix, the newly added clang/test/SemaCXX/warn-undefined-internal.cpp
failed with

> error: 'warning' diagnostics expected but not seen:
>   File /home/sbergman/github.com/llvm/llvm-project/clang/test/SemaCXX/warn-undefined-internal.cpp Line 12 (directive at /home/sbergman/github.com/llvm/llvm-project/clang/test/SemaCXX/warn-undefined-internal.cpp:13): function 'test2()::S::f' has internal linkage but is not defined
> error: 'note' diagnostics expected but not seen:
>   File /home/sbergman/github.com/llvm/llvm-project/clang/test/SemaCXX/warn-undefined-internal.cpp Line 14 (directive at /home/sbergman/github.com/llvm/llvm-project/clang/test/SemaCXX/warn-undefined-internal.cpp:15): used here

(I ran into this when two LibreOffice Clang plugins produced false positive
warnings, as they relied on Decl::isReferenced() returning true for such virtual
member functions of local classes.)

Differential Revision: https://reviews.llvm.org/D145123
clang/docs/ReleaseNotes.rst
clang/lib/Sema/SemaDeclCXX.cpp
clang/test/SemaCXX/warn-undefined-internal.cpp [new file with mode: 0644]