diff options
author | David Chisnall <csdavec@swan.ac.uk> | 2011-05-28 14:09:01 +0000 |
---|---|---|
committer | David Chisnall <csdavec@swan.ac.uk> | 2011-05-28 14:09:01 +0000 |
commit | 8a42d19b33fac68c7c9d74807b0b8d685e909cef (patch) | |
tree | 20d03c4815d4ad40ab5087dd6772595272e2e71d /clang | |
parent | 161505f4804d0594765cfa665d4cec50dad5c01c (diff) | |
download | bcm5719-llvm-8a42d19b33fac68c7c9d74807b0b8d685e909cef.tar.gz bcm5719-llvm-8a42d19b33fac68c7c9d74807b0b8d685e909cef.zip |
Fix missing cast.
llvm-svn: 132258
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CGObjCGNU.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp b/clang/lib/CodeGen/CGObjCGNU.cpp index 0b0ffec448e..c026eb10e43 100644 --- a/clang/lib/CodeGen/CGObjCGNU.cpp +++ b/clang/lib/CodeGen/CGObjCGNU.cpp @@ -956,16 +956,17 @@ CGObjCGNU::GenerateMessageSendSuper(CodeGenFunction &CGF, bool IsClassMessage, const CallArgList &CallArgs, const ObjCMethodDecl *Method) { + CGBuilderTy &Builder = CGF.Builder; if (CGM.getLangOptions().getGCMode() == LangOptions::GCOnly) { if (Sel == RetainSel || Sel == AutoreleaseSel) { - return RValue::get(Receiver); + return RValue::get(EnforceType(Builder, Receiver, + CGM.getTypes().ConvertType(ResultType))); } if (Sel == ReleaseSel) { return RValue::get(0); } } - CGBuilderTy &Builder = CGF.Builder; llvm::Value *cmd = GetSelector(Builder, Sel); @@ -1063,18 +1064,19 @@ CGObjCGNU::GenerateMessageSend(CodeGenFunction &CGF, const CallArgList &CallArgs, const ObjCInterfaceDecl *Class, const ObjCMethodDecl *Method) { + CGBuilderTy &Builder = CGF.Builder; + // Strip out message sends to retain / release in GC mode if (CGM.getLangOptions().getGCMode() == LangOptions::GCOnly) { if (Sel == RetainSel || Sel == AutoreleaseSel) { - return RValue::get(Receiver); + return RValue::get(EnforceType(Builder, Receiver, + CGM.getTypes().ConvertType(ResultType))); } if (Sel == ReleaseSel) { return RValue::get(0); } } - CGBuilderTy &Builder = CGF.Builder; - // If the return type is something that goes in an integer register, the // runtime will handle 0 returns. For other cases, we fill in the 0 value // ourselves. |