Fix a really bad bug where type uniquing would merge a<x> with b<x> as the same
type, because it did not include a/b in the hash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49321 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index f80f364..637061c 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -704,14 +704,16 @@
 }
 
 void ObjCQualifiedInterfaceType::Profile(llvm::FoldingSetNodeID &ID,
+                                         const ObjCInterfaceDecl *Decl,
                                          ObjCProtocolDecl **protocols, 
                                          unsigned NumProtocols) {
+  ID.AddPointer(Decl);
   for (unsigned i = 0; i != NumProtocols; i++)
     ID.AddPointer(protocols[i]);
 }
 
 void ObjCQualifiedInterfaceType::Profile(llvm::FoldingSetNodeID &ID) {
-  Profile(ID, &Protocols[0], getNumProtocols());
+  Profile(ID, getDecl(), &Protocols[0], getNumProtocols());
 }
 
 void ObjCQualifiedIdType::Profile(llvm::FoldingSetNodeID &ID,