diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-03-04 03:08:14 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-03-04 03:08:14 +0000 |
commit | f7f21859750c062314ec58765f0d89ce8ce907a1 (patch) | |
tree | 4bba8e178f0c2fcf16525d603223d9ab13281795 /clang/lib/CodeGen/CGDebugInfo.cpp | |
parent | 7cab007902067c7588e1d736b1c1e216874b1fa7 (diff) | |
download | bcm5719-llvm-f7f21859750c062314ec58765f0d89ce8ce907a1.tar.gz bcm5719-llvm-f7f21859750c062314ec58765f0d89ce8ce907a1.zip |
DebugInfo: Improvements/corrections to conservative emission of types in explicit template instantiation declarations
* detect out of line definitions correctly
* detect member function explicit specializations correctly
llvm-svn: 202779
Diffstat (limited to 'clang/lib/CodeGen/CGDebugInfo.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 6c24e8f8653..35bd57a0531 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1462,7 +1462,8 @@ static bool hasExplicitMemberDefinition(CXXRecordDecl::method_iterator I, CXXRecordDecl::method_iterator End) { for (; I != End; ++I) if (FunctionDecl *Tmpl = I->getInstantiatedFromMemberFunction()) - if (!Tmpl->isImplicit() && Tmpl->hasBody()) + if (!Tmpl->isImplicit() && Tmpl->isThisDeclarationADefinition() && + !I->getMemberSpecializationInfo()->isExplicitSpecialization()) return true; return false; } |