/* 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[32];

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]);
}
