forked from OSchip/llvm-project
Objective-C modern rewriter. Patch to fix a rewriting bug
rewriting an Objective-C block. Patch by Ryan Govostes. rdar://18799145 llvm-svn: 220834
This commit is contained in:
parent
04bf6931cc
commit
937224777a
|
@ -5526,6 +5526,10 @@ Stmt *RewriteModernObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
VK_RValue, OK_Ordinary, SourceLocation());
|
||||
NewRep = NoTypeInfoCStyleCastExpr(Context, FType, CK_BitCast,
|
||||
NewRep);
|
||||
// Put Paren around the call.
|
||||
NewRep = new (Context) ParenExpr(SourceLocation(), SourceLocation(),
|
||||
NewRep);
|
||||
|
||||
BlockDeclRefs.clear();
|
||||
BlockByRefDecls.clear();
|
||||
BlockByRefDeclsPtrSet.clear();
|
||||
|
|
|
@ -70,7 +70,7 @@ static int global_x = 10;
|
|||
void (^global_block)(void) = ^{ printf("global x is %d\n", global_x); };
|
||||
|
||||
// CHECK: static __global_block_block_impl_0 __global_global_block_block_impl_0((void *)__global_block_block_func_0, &__global_block_block_desc_0_DATA);
|
||||
// CHECK: void (*global_block)(void) = (void (*)())&__global_global_block_block_impl_0;
|
||||
// CHECK: void (*global_block)(void) = ((void (*)())&__global_global_block_block_impl_0);
|
||||
|
||||
typedef void (^void_block_t)(void);
|
||||
|
||||
|
|
|
@ -63,3 +63,6 @@ z w(int loc, int len);
|
|||
options &= ~(1 | 2);
|
||||
}
|
||||
@end
|
||||
|
||||
// rdar://18799145
|
||||
int Test18799145() { return ^(){return 0;}(); }
|
||||
|
|
|
@ -32,4 +32,4 @@ int main() {
|
|||
|
||||
// CHECK 2: (__Block_byref_BYREF_VAR_CHECK_0 *)BYREF_VAR_CHECK
|
||||
// CHECK: {(void*)0,(__Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, 0, sizeof(__Block_byref_BYREF_VAR_CHECK_0), 'a'}
|
||||
// CHECK: __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (__Block_byref_d_1 *)&d, 570425344));
|
||||
// CHECK: __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (__Block_byref_d_1 *)&d, 570425344)));
|
||||
|
|
Loading…
Reference in New Issue