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();