Fix <rdar://problem/6243788> clang: Incorrect return statement for Blocks?

llvm-svn: 56590
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index 3cadd52..df832b7 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -679,7 +679,9 @@
   // the block from it.
   if (CurBlock->ReturnType == 0) {
     if (RetValExp) {
-      UsualUnaryConversions(RetValExp);
+      // Don't call UsualUnaryConversions(), since we don't want to do
+      // integer promotions here.
+      DefaultFunctionArrayConversion(RetValExp);
       CurBlock->ReturnType = RetValExp->getType().getTypePtr();
     } else
       CurBlock->ReturnType = Context.VoidTy.getTypePtr();