Make conversion specifier warning refer to typedef if possible.

For example, the warning for printf("%zu", 42.0);
changes from "conversion specifies type 'unsigned long'" to "conversion
specifies type 'size_t' (aka 'unsigned long')"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145697 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/FormatString.cpp b/lib/Analysis/FormatString.cpp
index 6498ded..0171bb7 100644
--- a/lib/Analysis/FormatString.cpp
+++ b/lib/Analysis/FormatString.cpp
@@ -230,7 +230,8 @@
       
     case SpecificTy: {
       argTy = C.getCanonicalType(argTy).getUnqualifiedType();
-      if (T == argTy)
+      QualType U = C.getCanonicalType(T);
+      if (U == argTy)
         return true;
       // Check for "compatible types".
       if (const BuiltinType *BT = argTy->getAs<BuiltinType>())
@@ -239,26 +240,26 @@
             break;
           case BuiltinType::Char_S:
           case BuiltinType::SChar:
-            return T == C.UnsignedCharTy;
+            return U == C.UnsignedCharTy;
           case BuiltinType::Char_U:
           case BuiltinType::UChar:                    
-            return T == C.SignedCharTy;
+            return U == C.SignedCharTy;
           case BuiltinType::Short:
-            return T == C.UnsignedShortTy;
+            return U == C.UnsignedShortTy;
           case BuiltinType::UShort:
-            return T == C.ShortTy;
+            return U == C.ShortTy;
           case BuiltinType::Int:
-            return T == C.UnsignedIntTy;
+            return U == C.UnsignedIntTy;
           case BuiltinType::UInt:
-            return T == C.IntTy;
+            return U == C.IntTy;
           case BuiltinType::Long:
-            return T == C.UnsignedLongTy;
+            return U == C.UnsignedLongTy;
           case BuiltinType::ULong:
-            return T == C.LongTy;
+            return U == C.LongTy;
           case BuiltinType::LongLong:
-            return T == C.UnsignedLongLongTy;
+            return U == C.UnsignedLongLongTy;
           case BuiltinType::ULongLong:
-            return T == C.LongLongTy;
+            return U == C.LongLongTy;
         }
       return false;
     }
@@ -485,5 +486,3 @@
   }
   return false;
 }
-
-