summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2018-01-10 23:08:26 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2018-01-10 23:08:26 +0000
commit93ee9caaede478563bed7d29c7331552f74c3508 (patch)
treeea07994ab16660e05e49fd5a99767fcda36fd7ee /clang/lib
parent1f74a24ac05ce493a46bdadec4d7c089398214b5 (diff)
downloadbcm5719-llvm-93ee9caaede478563bed7d29c7331552f74c3508.tar.gz
bcm5719-llvm-93ee9caaede478563bed7d29c7331552f74c3508.zip
In C++17, when instantiating an out-of-line definition of an inline static data
member, don't forget to instantiate the initializer too. llvm-svn: 322236
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateDecl.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 0d45835742f..b8b74408cb8 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -4151,7 +4151,8 @@ void Sema::BuildVariableInstantiation(
// it right away if the type contains 'auto'.
if ((!isa<VarTemplateSpecializationDecl>(NewVar) &&
!InstantiatingVarTemplate &&
- !(OldVar->isInline() && OldVar->isThisDeclarationADefinition())) ||
+ !(OldVar->isInline() && OldVar->isThisDeclarationADefinition() &&
+ !NewVar->isThisDeclarationADefinition())) ||
NewVar->getType()->isUndeducedType())
InstantiateVariableInitializer(NewVar, OldVar, TemplateArgs);
OpenPOWER on IntegriCloud