From: Aaron Puchert Date: Fri, 31 Jan 2020 23:05:36 +0000 (+0100) Subject: Don't warn about missing declarations for partial template specializations X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=27684ae66d5545f211c0ac4393d0ba2bf3b5b47c;p=android-x86%2Fexternal-llvm-project.git Don't warn about missing declarations for partial template specializations Summary: Just like templates, they are excepted from the ODR rule. Reviewed By: aaron.ballman, rsmith Differential Revision: https://reviews.llvm.org/D68923 --- diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index e8589d3bcf4..2175361dab9 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -12523,6 +12523,7 @@ void Sema::CheckCompleteVariableDeclaration(VarDecl *var) { var->getDeclContext()->getRedeclContext()->isFileContext() && var->isExternallyVisible() && var->hasLinkage() && !var->isInline() && !var->getDescribedVarTemplate() && + !isa(var) && !isTemplateInstantiation(var->getTemplateSpecializationKind()) && !getDiagnostics().isIgnored(diag::warn_missing_variable_declarations, var->getLocation())) { diff --git a/clang/test/SemaCXX/warn-missing-variable-declarations.cpp b/clang/test/SemaCXX/warn-missing-variable-declarations.cpp index e2480fd663b..b50eeed30e7 100644 --- a/clang/test/SemaCXX/warn-missing-variable-declarations.cpp +++ b/clang/test/SemaCXX/warn-missing-variable-declarations.cpp @@ -70,6 +70,8 @@ template int var_template = 0; template constexpr int const_var_template = 0; template static int static_var_template = 0; +template int var_template; + template int var_template; int use_var_template() { return var_template; } template int var_template;