1 // RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin %s -o - | FileCheck %s
4 __attribute__((objc_runtime_name("MySecretNamespace.Protocol")))
10 __attribute__((objc_runtime_name("MySecretNamespace.Protocol2")))
16 __attribute__((objc_runtime_name("MySecretNamespace.Protocol3")))
20 __attribute__((objc_runtime_name("MySecretNamespace.Message")))
21 @interface Message <Protocol, Protocol2> {
25 @property(retain) Message *msgProp;
26 @property(retain) Message<Protocol3> *msgProtoProp;
27 @property(retain) id<Protocol3> idProtoProp;
31 @implementation Message
43 + (void) ClsMethodP {}
44 + (void) ClsMethodP2 {}
48 __attribute__((objc_runtime_name("foo")))
51 + (instancetype)alloc;
55 return [SLREarth alloc];
58 // CHECK: @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR" = global i64 0
59 // CHECK: @"OBJC_CLASS_$_MySecretNamespace.Message" = global %struct._class_t
60 // CHECK: @"OBJC_METACLASS_$_MySecretNamespace.Message" = global %struct._class_t
62 // CHECK: private unnamed_addr constant [42 x i8] c"T@\22MySecretNamespace.Message\22,&,V_msgProp\00"
63 // CHECK: private unnamed_addr constant [76 x i8] c"T@\22MySecretNamespace.Message<MySecretNamespace.Protocol3>\22,&,V_msgProtoProp\00"
64 // CHECK: private unnamed_addr constant [50 x i8] c"T@\22<MySecretNamespace.Protocol3>\22,&,V_idProtoProp\00"
66 // CHECK: @"OBJC_CLASS_$_foo" = external global %struct._class_t
67 // CHECK: define internal i8* @"\01-[Message MyMethod]"
68 // CHECK: [[IVAR:%.*]] = load i64, i64* @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR"