[ODRHash] Hash template arguments of methods.
llvm-svn: 330789
diff --git a/clang/lib/AST/ODRHash.cpp b/clang/lib/AST/ODRHash.cpp
index 364fd04..ee69506 100644
--- a/clang/lib/AST/ODRHash.cpp
+++ b/clang/lib/AST/ODRHash.cpp
@@ -148,6 +148,8 @@
AddQualType(TA.getAsType());
break;
case TemplateArgument::Declaration:
+ AddDecl(TA.getAsDecl());
+ break;
case TemplateArgument::NullPtr:
case TemplateArgument::Integral:
break;
@@ -330,6 +332,15 @@
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);
}