| /* APPLE LOCAL file radar 5988451 */ |
| /* Testing of copied in parameter in nested blocks. */ |
| /* { dg-do run { target *-*-darwin[1-2][0-9]* } } */ |
| /* { dg-options "-fblocks -mmacosx-version-min=10.5 -ObjC++ -framework Foundation" { target *-*-darwin* } } */ |
| /* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ |
| |
| #import <Foundation/Foundation.h> |
| void *_NSConcreteStackBlock; |
| |
| id Global = nil; |
| |
| void callVoidVoid(void (^closure)(void)) { |
| closure(); |
| } |
| |
| int foo(int argc, id x) { |
| id initial_x = x; |
| |
| void (^vv)(void) = ^{ |
| if (argc > 0) { |
| callVoidVoid(^{ Global = x; }); |
| } |
| }; |
| |
| x = nil; |
| vv(); |
| if (Global != initial_x) { |
| exit(1); |
| } |
| return 0; |
| } |
| |
| int main() |
| { |
| return foo(1, [[NSObject alloc] init]); |
| } |