1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -fobjc-arc -x objective-c -fobjc-runtime-has-weak %s.result 2// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fblocks -fsyntax-only %s > %t 3// RUN: diff %t %s.result 4 5#include "Common.h" 6 7@interface Foo : NSObject 8-(Foo *)something; 9@end 10 11void bar(void (^block)()); 12 13void test1(Foo *p) { 14 __weak Foo *x = p; // __block used just to break cycle. 15 bar(^{ 16 [x something]; 17 }); 18} 19 20void test2(Foo *p) { 21 __block Foo *x; // __block used as output variable. 22 bar(^{ 23 x = [p something]; 24 }); 25} 26 27void test3(Foo *p) { 28 __block Foo *x; // __block used as output variable. 29 bar(^{ 30 [x something]; 31 }); 32 bar(^{ 33 x = 0; 34 }); 35} 36 37void test4(Foo *p) { 38 __weak Foo *x = p; // __block used just to break cycle. 39 bar(^{ 40 [x something]; 41 }); 42 bar(^{ 43 [x something]; 44 }); 45} 46