aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateDecl.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 4d58f00..a56017c 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -6198,6 +6198,10 @@ void Sema::InstantiateVariableInitializer(
currentEvaluationContext().RebuildDefaultArgOrDefaultInit =
parentEvaluationContext().RebuildDefaultArgOrDefaultInit;
+ // Set DeclForInitializer for this variable so DiagIfReachable can properly
+ // suppress runtime diagnostics for constexpr/static member variables
+ currentEvaluationContext().DeclForInitializer = Var;
+
if (OldVar->getInit()) {
// Instantiate the initializer.
ExprResult Init =
@@ -6467,6 +6471,8 @@ void Sema::InstantiateVariableDefinition(SourceLocation PointOfInstantiation,
PassToConsumerRAII.Var = Var;
Var->setTemplateSpecializationKind(OldVar->getTemplateSpecializationKind(),
OldVar->getPointOfInstantiation());
+ // Emit any deferred warnings for the variable's initializer
+ AnalysisWarnings.issueWarningsForRegisteredVarDecl(Var);
}
// This variable may have local implicit instantiations that need to be