aaronpuchert created this revision. aaronpuchert added reviewers: aaron.ballman, rsmith. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Just like templates, they are excepted from the ODR rule. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D68923 Files: clang/lib/Sema/SemaDecl.cpp clang/test/SemaCXX/warn-missing-variable-declarations.cpp Index: clang/test/SemaCXX/warn-missing-variable-declarations.cpp =================================================================== --- clang/test/SemaCXX/warn-missing-variable-declarations.cpp +++ clang/test/SemaCXX/warn-missing-variable-declarations.cpp @@ -70,6 +70,8 @@ template<typename> constexpr int const_var_template = 0; template<typename> static int static_var_template = 0; +template<typename T> int var_template<T*>; + template int var_template<int[1]>; int use_var_template() { return var_template<int[2]>; } template int var_template<int[3]>; Index: clang/lib/Sema/SemaDecl.cpp =================================================================== --- clang/lib/Sema/SemaDecl.cpp +++ clang/lib/Sema/SemaDecl.cpp @@ -12345,6 +12345,7 @@ var->getDeclContext()->getRedeclContext()->isFileContext() && var->isExternallyVisible() && var->hasLinkage() && !var->isInline() && !var->getDescribedVarTemplate() && + !isa<VarTemplatePartialSpecializationDecl>(var) && !isTemplateInstantiation(var->getTemplateSpecializationKind()) && !getDiagnostics().isIgnored(diag::warn_missing_variable_declarations, var->getLocation())) {
Index: clang/test/SemaCXX/warn-missing-variable-declarations.cpp =================================================================== --- clang/test/SemaCXX/warn-missing-variable-declarations.cpp +++ clang/test/SemaCXX/warn-missing-variable-declarations.cpp @@ -70,6 +70,8 @@ template<typename> constexpr int const_var_template = 0; template<typename> static int static_var_template = 0; +template<typename T> int var_template<T*>; + template int var_template<int[1]>; int use_var_template() { return var_template<int[2]>; } template int var_template<int[3]>; Index: clang/lib/Sema/SemaDecl.cpp =================================================================== --- clang/lib/Sema/SemaDecl.cpp +++ clang/lib/Sema/SemaDecl.cpp @@ -12345,6 +12345,7 @@ var->getDeclContext()->getRedeclContext()->isFileContext() && var->isExternallyVisible() && var->hasLinkage() && !var->isInline() && !var->getDescribedVarTemplate() && + !isa<VarTemplatePartialSpecializationDecl>(var) && !isTemplateInstantiation(var->getTemplateSpecializationKind()) && !getDiagnostics().isIgnored(diag::warn_missing_variable_declarations, var->getLocation())) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits