From 8c72a7db34a63c38c6065b73fda4aeb0fe19eb65 Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Thu, 1 Mar 2012 22:52:28 +0000 Subject: [PATCH] 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 --- lib/CodeGen/CGObjC.cpp | 8 ++++---- 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*) -- 2.50.1