Fix decl type merges when they have
__string/__weak attributes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69229 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index f0c2d2b..63d88b2 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -2937,8 +2937,8 @@
   if (LHSCan.getCVRQualifiers() != RHSCan.getCVRQualifiers())
     return QualType();
 
-  Type::TypeClass LHSClass = LHSCan->getTypeClass();
-  Type::TypeClass RHSClass = RHSCan->getTypeClass();
+  Type::TypeClass LHSClass = LHSCan.getUnqualifiedType()->getTypeClass();
+  Type::TypeClass RHSClass = RHSCan.getUnqualifiedType()->getTypeClass();
 
   // We want to consider the two function types to be the same for these
   // comparisons, just force one to the other.
@@ -2963,7 +2963,7 @@
   if (LHSClass != RHSClass) {
     const ObjCInterfaceType* LHSIface = LHS->getAsObjCInterfaceType();
     const ObjCInterfaceType* RHSIface = RHS->getAsObjCInterfaceType();
-
+    
     // 'id' and 'Class' act sort of like void* for ObjC interfaces
     if (LHSIface && (isObjCIdStructType(RHS) || isObjCClassStructType(RHS)))
       return LHS;