// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
// RUN: diff %t %s.result

#include "Common.h"

void NSLog(id, ...);

int main (int argc, const char * argv[]) {

    @autoreleasepool {

        if (argc) {
            @autoreleasepool {
                NSLog(@"%s", "YES");
            }
        }
    }

    @autoreleasepool {
        NSLog(@"%s", "YES");
    }

    return 0;
}

void f(void) {

  @autoreleasepool {
    int x = 4;

    @autoreleasepool {
      ++x;
    }

  }
}

int UIApplicationMain(int argc, char *argv[]);

int main2(int argc, char *argv[]) {
    @autoreleasepool {
        int result = UIApplicationMain(argc, argv);
        return result;
    }
}

@interface Foo : NSObject
@property (unsafe_unretained) id myProp;
@end

@implementation Foo
@synthesize myProp;

-(void)test:(id)p {
  @autoreleasepool {
  }
  self.myProp = p;
}
@end
