// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
// RUN: %clang_cc1 -triple armv7-apple-darwin10 -emit-llvm  -o - %s | FileCheck %s
// RUN: %clang_cc1 -triple arm64-apple-ios -emit-llvm -o - %s | FileCheck %s
// rdar://16206443

@interface NSObject 
- (void) finalize;
+ (void) class;
@end

__attribute__((availability(macosx,introduced=9876.5)))
@interface MyClass : NSObject
+ (void)someClassMethod;
- (void)someInstanceMethod;
@end

@implementation MyClass
+ (void)someClassMethod {
}

- (void)someInstanceMethod {
    [MyClass someClassMethod];
    [super finalize];
}
@end

void kit()
{
    MyClass *wrapper = [MyClass alloc];
}

// CHECK: @"OBJC_CLASS_$_MyClass" = global %struct._class_t
// CHECK: @"OBJC_METACLASS_$_NSObject" = external global %struct._class_t
// CHECK: @"OBJC_METACLASS_$_MyClass" = global %struct._class_t
// CHECK: @"OBJC_CLASS_$_NSObject" = external global %struct._class_t

// rdar://16529125
__attribute__((weak_import))
@interface NSURLQueryItem : NSObject
@end

@implementation NSURLQueryItem (hax)
+(void)classmethod { [super class]; }
@end

// CHECK: @"OBJC_METACLASS_$_NSURLQueryItem" = extern_weak global
// CHECK: @"OBJC_CLASS_$_NSURLQueryItem" = extern_weak global

// rdar://17633301
__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=9876.5)))
@interface AVScheduledAudioParameters @end

@interface XXXX : AVScheduledAudioParameters
@end

@implementation AVScheduledAudioParameters @end
@implementation XXXX @end

// CHECK: @"OBJC_CLASS_$_AVScheduledAudioParameters" = global %struct._class_t
// CHECK: @"OBJC_METACLASS_$_AVScheduledAudioParameters" = global %struct._class_t 
