diff options
author | Steve Naroff <snaroff@apple.com> | 2008-12-11 20:51:38 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2008-12-11 20:51:38 +0000 |
commit | 47a242208867fa433d05a78bf346bbb37721a507 (patch) | |
tree | f5d3b5597b8fa63e1a6147fda3fc7eb8e487628c | |
parent | e267ff35b2f4e9d2b0d8bf24109d41cc7398b61b (diff) |
Fixup generated code for imported block decl refs.
Found while investigating <rdar://problem/6435837> clang ObjC rewriter: use Block_release instead of Block_destroy.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60898 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | Driver/RewriteObjC.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Driver/RewriteObjC.cpp b/Driver/RewriteObjC.cpp index dd04a12d35..dd3f200635 100644 --- a/Driver/RewriteObjC.cpp +++ b/Driver/RewriteObjC.cpp @@ -3516,9 +3516,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_copy_assign(&dst->"; + S += "_Block_copy_assign((void*)&dst->"; S += (*I)->getNameAsString(); - S += ", src->"; + S += ", (void*)src->"; S += (*I)->getNameAsString(); S += ");}"; } @@ -3529,7 +3529,7 @@ 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_destroy(src->"; + S += "_Block_destroy((void*)src->"; S += (*I)->getNameAsString(); S += ");"; } @@ -3993,7 +3993,7 @@ void RewriteObjC::CollectBlockDeclRefInfo(BlockExpr *Exp) { } // Find any imported blocks...they will need special attention. for (unsigned i = 0; i < BlockDeclRefs.size(); i++) - if (isBlockPointerType(BlockDeclRefs[i]->getType())) { + if (BlockDeclRefs[i]->getType()->isBlockPointerType()) { GetBlockCallExprs(BlockDeclRefs[i]); ImportedBlockDecls.insert(BlockDeclRefs[i]->getDecl()); } |