diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2011-07-30 01:21:41 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2011-07-30 01:21:41 +0000 |
commit | d560ed7f1b6aa688854fcd43ac44bb91f18e502c (patch) | |
tree | 0fb70be02ac4dc97e206647ce437e5bef25990c0 /clang/lib/Rewrite/RewriteObjC.cpp | |
parent | bce9ee2ae679ce6b634921eec564aedd7122d48a (diff) | |
download | bcm5719-llvm-d560ed7f1b6aa688854fcd43ac44bb91f18e502c.tar.gz bcm5719-llvm-d560ed7f1b6aa688854fcd43ac44bb91f18e502c.zip |
objc rewriter - my last patch was not quite right.
Fixed again. // rdar://9846759
llvm-svn: 136550
Diffstat (limited to 'clang/lib/Rewrite/RewriteObjC.cpp')
-rw-r--r-- | clang/lib/Rewrite/RewriteObjC.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Rewrite/RewriteObjC.cpp b/clang/lib/Rewrite/RewriteObjC.cpp index 3e57e12db7e..a27fac7258f 100644 --- a/clang/lib/Rewrite/RewriteObjC.cpp +++ b/clang/lib/Rewrite/RewriteObjC.cpp @@ -4253,14 +4253,17 @@ 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) { + ValueDecl *VD = (*I); S += "_Block_object_assign((void*)&dst->"; S += (*I)->getNameAsString(); S += ", (void*)src->"; S += (*I)->getNameAsString(); if (BlockByRefDeclsPtrSet.count((*I))) S += ", " + utostr(BLOCK_FIELD_IS_BYREF) + "/*BLOCK_FIELD_IS_BYREF*/);"; - else + else if (VD->getType()->isBlockPointerType()) S += ", " + utostr(BLOCK_FIELD_IS_BLOCK) + "/*BLOCK_FIELD_IS_BLOCK*/);"; + else + S += ", " + utostr(BLOCK_FIELD_IS_OBJECT) + "/*BLOCK_FIELD_IS_OBJECT*/);"; } S += "}\n"; @@ -4271,12 +4274,15 @@ 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) { + ValueDecl *VD = (*I); S += "_Block_object_dispose((void*)src->"; S += (*I)->getNameAsString(); if (BlockByRefDeclsPtrSet.count((*I))) S += ", " + utostr(BLOCK_FIELD_IS_BYREF) + "/*BLOCK_FIELD_IS_BYREF*/);"; - else + else if (VD->getType()->isBlockPointerType()) S += ", " + utostr(BLOCK_FIELD_IS_BLOCK) + "/*BLOCK_FIELD_IS_BLOCK*/);"; + else + S += ", " + utostr(BLOCK_FIELD_IS_OBJECT) + "/*BLOCK_FIELD_IS_OBJECT*/);"; } S += "}\n"; return S; |