/* APPLE LOCAL file 5782740 - blocks */
/* Test generation of copy/destroy helper function. */
/* { dg-do compile } */
/* { dg-options "-mmacosx-version-min=10.5 -ObjC -fblocks" { target *-*-darwin* } } */

#import <Cocoa/Cocoa.h>

@interface Root @end

extern bar(double (^cp)(int));

@implementation Root

- (void)example {
 int x;
 __block int y;
 NSAutoreleasePool *pool = [NSAutoreleasePool new];
 NSAutoreleasePool *relpool = [NSAutoreleasePool new];
 bar(^(int z){ y = x+z;  [pool drain]; if (y) y++; [relpool release]; return y+2.0; }); 
}
@end

int main()
{
	int x = 10;
	int (^P) (void) = ^ { return x; };

	int (^Q) (void) = ^ { return P(); };
}
/* { dg-final { scan-assembler "___copy_helper_block_" } } */
/* { dg-final { scan-assembler "___destroy_helper_block_" } } */
