From a11bd8a7dc7edefd5dbdabfb4ef0391a09b93235 Mon Sep 17 00:00:00 2001 From: Larisse Voufo Date: Tue, 13 Aug 2013 02:02:26 +0000 Subject: variable templates updated for PCH serialization... Still working on test cases... llvm-svn: 188249 --- clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'clang/lib/Sema/SemaTemplateInstantiateDecl.cpp') diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 315a405c6d3..5766afa1011 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -3481,11 +3481,22 @@ void Sema::InstantiateVariableDefinition(SourceLocation PointOfInstantiation, llvm::PointerUnion PatternPtr = VarSpec->getSpecializedTemplateOrPartial(); - if (PatternPtr.is()) + if (PatternPtr.is()) { PatternDecl = cast( PatternPtr.get()); - else - PatternDecl = (PatternPtr.get())->getTemplatedDecl(); + + // Find actual definition + if (VarDecl *Def = PatternDecl->getDefinition(getASTContext())) + PatternDecl = Def; + } else { + VarTemplateDecl *PatternTemplate = PatternPtr.get(); + + // Find actual definition + if (VarTemplateDecl *Def = PatternTemplate->getDefinition()) + PatternTemplate = Def; + + PatternDecl = PatternTemplate->getTemplatedDecl(); + } assert(PatternDecl && "instantiating a non-template"); } -- cgit v1.2.3