[clang] d9fad46 - [Clang] Don't trigger `-Wweak-vtables` on an explicit instantiation declaration (#195189)
via cfe-commits
cfe-commits at lists.llvm.org
Fri May 1 04:32:24 PDT 2026
Author: Tomohiro Kashiwada
Date: 2026-05-01T11:32:18Z
New Revision: d9fad468dfd4ae13f00c9bc1629bb519517b18fd
URL: https://github.com/llvm/llvm-project/commit/d9fad468dfd4ae13f00c9bc1629bb519517b18fd
DIFF: https://github.com/llvm/llvm-project/commit/d9fad468dfd4ae13f00c9bc1629bb519517b18fd.diff
LOG: [Clang] Don't trigger `-Wweak-vtables` on an explicit instantiation declaration (#195189)
fixes #195110
Added:
Modified:
clang/lib/Sema/SemaDeclCXX.cpp
clang/test/SemaCXX/warn-weak-vtables.cpp
Removed:
################################################################################
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 2ff426622593c..1e339fee29ab8 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -19290,6 +19290,7 @@ bool Sema::DefineUsedVTables() {
!(Class->getOwningModule() &&
Class->getOwningModule()->isInterfaceOrPartition()) &&
ClassTSK != TSK_ImplicitInstantiation &&
+ ClassTSK != TSK_ExplicitInstantiationDeclaration &&
ClassTSK != TSK_ExplicitInstantiationDefinition) {
const FunctionDecl *KeyFunctionDef = nullptr;
if (!KeyFunction || (KeyFunction->hasBody(KeyFunctionDef) &&
diff --git a/clang/test/SemaCXX/warn-weak-vtables.cpp b/clang/test/SemaCXX/warn-weak-vtables.cpp
index 03431d6003814..9262162fdd3e9 100644
--- a/clang/test/SemaCXX/warn-weak-vtables.cpp
+++ b/clang/test/SemaCXX/warn-weak-vtables.cpp
@@ -89,6 +89,19 @@ void uses_templ() {
TemplVirt<long> l;
}
+namespace GH195110 {
+// Check that no warning is emitted on a template instantiation.
+template <class> struct basic_streambuf {
+ __attribute__((__exclude_from_explicit_instantiation__)) virtual void
+ overflow();
+
+ virtual ~basic_streambuf() {}
+};
+extern template class basic_streambuf<char>;
+
+basic_streambuf<char> b;
+}
+
//--- module-weak-vtable.cpp
// expected-no-diagnostics
export module m;
More information about the cfe-commits
mailing list