block-dynamic-array.C   [plain text]


/* APPLE LOCAL file radar 6212722 */
/* Test for use of array (dynamic or static) as copied in object in a block. */
/* { dg-do run { target *-*-darwin[1-2][0-9]* } } */
/* { dg-options "-mmacosx-version-min=10.6 -ObjC++ -framework Foundation" { target *-*-darwin* } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */

#import <Foundation/Foundation.h>
#import <Block.h>


int _getArrayCount() {return 5;}


int func ()
{
	NSAutoreleasePool *pool	= [[NSAutoreleasePool alloc] init];

	int array[5];
	
	int i;
	const int c = 5;
	for (i = 0; i < c; ++i)
	{
		array[i] = i+1;
	}
	
	void (^block)(void) = ^{
	
		int i;
		NSLog (@"c = %d", c);
		for (i = 0; i < c; ++i)
		{
			NSLog (@"array[%d] = %d", i, array[i]);
		}
	
	};
	
	block();

	[pool drain];
	return 0;
}

int main (int argc, const char *argv[])
{
        int res;
	NSAutoreleasePool *pool	= [[NSAutoreleasePool alloc] init];

	int array[_getArrayCount()];
	
	int i;
	const int c = _getArrayCount();
	for (i = 0; i < c; ++i)
	{
		array[i] = i+1;
	}
	
	void (^block)(void) = ^{
	
		int i;
		//const int c = _getArrayCount();
		NSLog (@"c = %d", c);
		for (i = 0; i < c; ++i)
		{
			NSLog (@"array[%d] = %d", i, array[i]);
		}
	
	};
	
	block();
	res = func();

	[pool drain];
	return 0 + res;
}