diff options
author | Steve Naroff <snaroff@apple.com> | 2008-12-16 15:50:30 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2008-12-16 15:50:30 +0000 |
commit | 5bc60d0c324a1b3984cd4a32acb587c8f873ab5f (patch) | |
tree | f10c91e8da7a275954d8fedc40325c57de661e30 /Driver/RewriteObjC.cpp | |
parent | 3dde5a3fa28cae4b8b2fb060abc0bfc2b4425ed8 (diff) |
Fix <rdar://problem/6445502> clang ObjC rewriter: _Block_release has wrong parameter type in preamble
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61088 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver/RewriteObjC.cpp')
-rw-r--r-- | Driver/RewriteObjC.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/Driver/RewriteObjC.cpp b/Driver/RewriteObjC.cpp index aaaa0c6689..8828c1c2d3 100644 --- a/Driver/RewriteObjC.cpp +++ b/Driver/RewriteObjC.cpp @@ -537,13 +537,11 @@ void RewriteObjC::Initialize(ASTContext &context) { Preamble += " int Size;\n"; Preamble += " void *FuncPtr;\n"; Preamble += "};\n"; - Preamble += "// Runtime copy/destroy helper functions\n"; - Preamble += "__OBJC_RW_STATICIMPORT void _Block_copy_assign(void *, void *);\n"; - Preamble += "__OBJC_RW_STATICIMPORT void _Block_byref_assign_copy(void *, void *);\n"; - Preamble += "__OBJC_RW_STATICIMPORT void _Block_release(void *);\n"; - Preamble += "__OBJC_RW_STATICIMPORT void _Block_byref_release(void *);\n"; - Preamble += "__OBJC_RW_STATICIMPORT void *_NSConcreteGlobalBlock;\n"; - Preamble += "__OBJC_RW_STATICIMPORT void *_NSConcreteStackBlock;\n"; + Preamble += "// Runtime copy/destroy helper functions (from Block_private.h)\n"; + Preamble += "__OBJC_RW_STATICIMPORT void _Block_object_assign(void *, const void *, const int);\n"; + Preamble += "__OBJC_RW_STATICIMPORT void _Block_object_dispose(const void *, const int);\n"; + Preamble += "__OBJC_RW_STATICIMPORT void *_NSConcreteGlobalBlock[32];\n"; + Preamble += "__OBJC_RW_STATICIMPORT void *_NSConcreteStackBlock[32];\n"; Preamble += "#endif\n"; if (LangOpts.Microsoft) { Preamble += "#undef __OBJC_RW_DLLIMPORT\n"; @@ -3516,11 +3514,11 @@ std::string RewriteObjC::SynthesizeBlockHelperFuncs(BlockExpr *CE, int i, S += "*src) {"; for (llvm::SmallPtrSet<ValueDecl*,8>::iterator I = ImportedBlockDecls.begin(), E = ImportedBlockDecls.end(); I != E; ++I) { - S += "_Block_copy_assign((void*)&dst->"; + S += "_Block_object_assign((void*)&dst->"; S += (*I)->getNameAsString(); S += ", (void*)src->"; S += (*I)->getNameAsString(); - S += ");}"; + S += ", 3/*BLOCK_FIELD_IS_OBJECT*/);}"; } S += "\nstatic void __"; S += funcName; @@ -3529,9 +3527,9 @@ std::string RewriteObjC::SynthesizeBlockHelperFuncs(BlockExpr *CE, int i, S += "*src) {"; for (llvm::SmallPtrSet<ValueDecl*,8>::iterator I = ImportedBlockDecls.begin(), E = ImportedBlockDecls.end(); I != E; ++I) { - S += "_Block_release((void*)src->"; + S += "_Block_object_dispose((void*)src->"; S += (*I)->getNameAsString(); - S += ");"; + S += ", 3/*BLOCK_FIELD_IS_OBJECT*/);"; } S += "}\n"; return S; |