objc-gc-static-init.mm   [plain text]


/* APPLE LOCAL file radar 5733674 */
/* Test that static GC'able objects are garbage collected by generating write barrier. 
   Test should build and run. */
/* { dg-options "-fobjc-gc -mmacosx-version-min=10.5 -framework Foundation" } */
/* { dg-do run { target *-*-darwin* } } */
/* { dg-require-effective-target objc_gc } */

#import <Foundation/Foundation.h>

@interface Test : NSObject
{
}
@end
@implementation Test

static NSString *createMacOSXVersionString()
{
    return [[NSString alloc] initWithString:[[NSDate date] description]];
}

- (void)getString
{
    static NSString *string = createMacOSXVersionString();
    NSLog(@"string: %@", string);
    NSLog(@"string: %p", string);
}

@end



int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    Test *testClass = [[Test alloc] init];
    unsigned counter, max = 4;
    for (counter = 0; counter < max; counter++) {
        [testClass getString];
        [[NSGarbageCollector defaultCollector] collectExhaustively];
    }
    [testClass release];
    
    // insert code here...
    NSLog(@"Hello, World!");
    [pool drain];
    return 0;
}