r220834 - Objective-C modern rewriter. Patch to fix a rewriting bug

Fariborz Jahanian fjahanian at apple.com
Tue Oct 28 16:46:59 PDT 2014


Author: fjahanian
Date: Tue Oct 28 18:46:58 2014
New Revision: 220834

URL: http://llvm.org/viewvc/llvm-project?rev=220834&view=rev
Log:
Objective-C modern rewriter. Patch to fix a rewriting bug 
rewriting an Objective-C block. Patch by Ryan Govostes.
rdar://18799145 

Modified:
    cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp
    cfe/trunk/test/Rewriter/rewrite-block-literal.mm
    cfe/trunk/test/Rewriter/rewrite-modern-block.mm
    cfe/trunk/test/Rewriter/rewrite-modern-captured-nested-bvar.mm

Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp?rev=220834&r1=220833&r2=220834&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp (original)
+++ cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp Tue Oct 28 18:46:58 2014
@@ -5526,6 +5526,10 @@ Stmt *RewriteModernObjC::SynthBlockInitE
                              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();

Modified: cfe/trunk/test/Rewriter/rewrite-block-literal.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-block-literal.mm?rev=220834&r1=220833&r2=220834&view=diff
==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-block-literal.mm (original)
+++ cfe/trunk/test/Rewriter/rewrite-block-literal.mm Tue Oct 28 18:46:58 2014
@@ -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);
 

Modified: cfe/trunk/test/Rewriter/rewrite-modern-block.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-modern-block.mm?rev=220834&r1=220833&r2=220834&view=diff
==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-modern-block.mm (original)
+++ cfe/trunk/test/Rewriter/rewrite-modern-block.mm Tue Oct 28 18:46:58 2014
@@ -63,3 +63,6 @@ z w(int loc, int len);
     options &= ~(1 | 2);
 }
 @end
+
+// rdar://18799145
+int Test18799145() { return ^(){return 0;}(); }

Modified: cfe/trunk/test/Rewriter/rewrite-modern-captured-nested-bvar.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-modern-captured-nested-bvar.mm?rev=220834&r1=220833&r2=220834&view=diff
==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-modern-captured-nested-bvar.mm (original)
+++ cfe/trunk/test/Rewriter/rewrite-modern-captured-nested-bvar.mm Tue Oct 28 18:46:58 2014
@@ -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)));





More information about the cfe-commits mailing list