[ODRHash] Hash TemplateArgument::Pack and TemplateTypeParmType

llvm-svn: 305440
diff --git a/clang/lib/AST/ODRHash.cpp b/clang/lib/AST/ODRHash.cpp
index f037827..3bf9896 100644
--- a/clang/lib/AST/ODRHash.cpp
+++ b/clang/lib/AST/ODRHash.cpp
@@ -159,6 +159,10 @@
       AddStmt(TA.getAsExpr());
       break;
     case TemplateArgument::Pack:
+      ID.AddInteger(TA.pack_size());
+      for (auto SubTA : TA.pack_elements()) {
+        AddTemplateArgument(SubTA);
+      }
       break;
   }
 }
@@ -549,6 +553,13 @@
     Hash.AddTemplateName(T->getTemplateName());
     VisitType(T);
   }
+
+  void VisitTemplateTypeParmType(const TemplateTypeParmType *T) {
+    ID.AddInteger(T->getDepth());
+    ID.AddInteger(T->getIndex());
+    Hash.AddBoolean(T->isParameterPack());
+    AddDecl(T->getDecl());
+  }
 };
 
 void ODRHash::AddType(const Type *T) {