diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-03-01 22:52:28 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-03-01 22:52:28 +0000 |
commit | 8c72a7db34a63c38c6065b73fda4aeb0fe19eb65 (patch) | |
tree | 54af05df6016af97645c3229488c35fa9857c127 | |
parent | 3d32bb03685c78a0327d741501b15fe40c4f980b (diff) |
Make CodeGenFunction::EmitBlockCopyAndAutorelease actually do what its name says.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151853 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGObjC.cpp | 8 | ||||
-rw-r--r-- | test/CodeGenObjCXX/lambda-expressions.mm | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp index 9eb58fc603..6d95f17226 100644 --- a/lib/CodeGen/CGObjC.cpp +++ b/lib/CodeGen/CGObjC.cpp @@ -2777,9 +2777,9 @@ CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction( llvm::Value * CodeGenFunction::EmitBlockCopyAndAutorelease(llvm::Value *Block, QualType Ty) { // Get selectors for retain/autorelease. - IdentifierInfo *RetainID = &getContext().Idents.get("retain"); - Selector RetainSelector = - getContext().Selectors.getNullarySelector(RetainID); + IdentifierInfo *CopyID = &getContext().Idents.get("copy"); + Selector CopySelector = + getContext().Selectors.getNullarySelector(CopyID); IdentifierInfo *AutoreleaseID = &getContext().Idents.get("autorelease"); Selector AutoreleaseSelector = getContext().Selectors.getNullarySelector(AutoreleaseID); @@ -2789,7 +2789,7 @@ CodeGenFunction::EmitBlockCopyAndAutorelease(llvm::Value *Block, QualType Ty) { llvm::Value *Val = Block; RValue Result; Result = Runtime.GenerateMessageSend(*this, ReturnValueSlot(), - Ty, RetainSelector, + Ty, CopySelector, Val, CallArgList(), 0, 0); Val = Result.getScalarVal(); Result = Runtime.GenerateMessageSend(*this, ReturnValueSlot(), diff --git a/test/CodeGenObjCXX/lambda-expressions.mm b/test/CodeGenObjCXX/lambda-expressions.mm index 36a1996ee8..858cb74aa2 100644 --- a/test/CodeGenObjCXX/lambda-expressions.mm +++ b/test/CodeGenObjCXX/lambda-expressions.mm @@ -4,6 +4,8 @@ typedef int (^fp)(); fp f() { auto x = []{ return 3; }; return x; } +// MRC: @"\01L_OBJC_METH_VAR_NAME{{.*}}" = internal global [5 x i8] c"copy\00" +// MRC: @"\01L_OBJC_METH_VAR_NAME{{.*}}" = internal global [12 x i8] c"autorelease\00" // MRC: define i32 ()* @_Z1fv( // MRC: define internal i32 ()* @"_ZZ1fvENK3$_0cvU13block_pointerFivEEv" // MRC: store i8* bitcast (i8** @_NSConcreteStackBlock to i8*) |