// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -DKEEP_ATTRIBUTES -D"id=struct objc_object *" -D"Class=struct objc_class *" -D"SEL=void*" -D"__declspec(X)=" -emit-llvm -o - %t-rw.cpp | FileCheck %t-rw.cpp
// radar 7738453

void *sel_registerName(const char *);

@interface __NSCFType
@end

@interface __NSCFString : __NSCFType
- (const char *)UTF8String;
@end

@implementation __NSCFString
- (const char *)UTF8String {
    return (const char *)[super UTF8String];
}
@end

// CHECK: call %struct.objc_class* @class_getSuperclass

@class NSZone;

@interface NSObject {
}

+ (id)allocWithZone:(NSZone *)zone;
@end


@interface NSArray : NSObject
@end

@implementation NSArray
+ (id)allocWithZone:(NSZone *)zone {
    return [super allocWithZone:zone];
}
@end

@interface XNSArray
{
  Class isa;
}
@end

@class XNSArray;

@interface __NSArray0 : XNSArray
@end

@implementation __NSArray0 @end
