Tweak nil receiver checker to not warning about 64-bit return values.

Fixes: <rdar://problem/7513117>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115113 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Checker/CallAndMessageChecker.cpp b/lib/Checker/CallAndMessageChecker.cpp
index 0d397a2..be09e51 100644
--- a/lib/Checker/CallAndMessageChecker.cpp
+++ b/lib/Checker/CallAndMessageChecker.cpp
@@ -276,7 +276,9 @@
 
 static bool SupportsNilWithFloatRet(const llvm::Triple &triple) {
   return triple.getVendor() == llvm::Triple::Apple &&
-         triple.getDarwinMajorNumber() >= 9;
+         (triple.getDarwinMajorNumber() >= 9 || 
+          triple.getArch() == llvm::Triple::arm || 
+          triple.getArch() == llvm::Triple::thumb);
 }
 
 void CallAndMessageChecker::HandleNilReceiver(CheckerContext &C,
@@ -318,7 +320,8 @@
           (Ctx.FloatTy == CanRetTy ||
            Ctx.DoubleTy == CanRetTy ||
            Ctx.LongDoubleTy == CanRetTy ||
-           Ctx.LongLongTy == CanRetTy))) {
+           Ctx.LongLongTy == CanRetTy ||
+           Ctx.UnsignedLongLongTy == CanRetTy))) {
       if (ExplodedNode* N = C.GenerateSink(state))
         EmitNilReceiverBug(C, ME, N);
       return;