diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-01-10 23:08:26 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-01-10 23:08:26 +0000 |
commit | 93ee9caaede478563bed7d29c7331552f74c3508 (patch) | |
tree | ea07994ab16660e05e49fd5a99767fcda36fd7ee /clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | |
parent | 1f74a24ac05ce493a46bdadec4d7c089398214b5 (diff) | |
download | bcm5719-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/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 3 |
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); |