diff options
Diffstat (limited to 'clang/lib/AST/ODRHash.cpp')
-rw-r--r-- | clang/lib/AST/ODRHash.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/AST/ODRHash.cpp b/clang/lib/AST/ODRHash.cpp index 364fd04b83b..ee6950655cf 100644 --- a/clang/lib/AST/ODRHash.cpp +++ b/clang/lib/AST/ODRHash.cpp @@ -148,6 +148,8 @@ void ODRHash::AddTemplateArgument(TemplateArgument TA) { AddQualType(TA.getAsType()); break; case TemplateArgument::Declaration: + AddDecl(TA.getAsDecl()); + break; case TemplateArgument::NullPtr: case TemplateArgument::Integral: break; @@ -330,6 +332,15 @@ public: AddQualType(D->getReturnType()); + const auto* SpecializationArgs = D->getTemplateSpecializationArgs(); + Hash.AddBoolean(SpecializationArgs); + if (SpecializationArgs) { + ID.AddInteger(SpecializationArgs->size()); + for (const TemplateArgument &TA : SpecializationArgs->asArray()) { + Hash.AddTemplateArgument(TA); + } + } + Inherited::VisitFunctionDecl(D); } |