Patch to warn when discarding objective-c pointer type qualifiers
Still some refactoring to do.

llvm-svn: 90830
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index a63ce1e..28a826f 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -4434,6 +4434,16 @@
     if (rhsType->isObjCObjectPointerType()) {
       if (lhsType->isObjCBuiltinType() || rhsType->isObjCBuiltinType())
         return Compatible;
+      QualType lhptee = 
+        lhsType->getAs<ObjCObjectPointerType>()->getPointeeType();
+      QualType rhptee = 
+        rhsType->getAs<ObjCObjectPointerType>()->getPointeeType();
+      // make sure we operate on the canonical type
+      lhptee = Context.getCanonicalType(lhptee);
+      rhptee = Context.getCanonicalType(rhptee);
+      if (!lhptee.isAtLeastAsQualifiedAs(rhptee))
+        return CompatiblePointerDiscardsQualifiers;
+      
       if (Context.typesAreCompatible(lhsType, rhsType))
         return Compatible;
       if (lhsType->isObjCQualifiedIdType() || rhsType->isObjCQualifiedIdType())