| // RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin %s -o - | FileCheck %s |
| __attribute__((objc_runtime_name("MySecretNamespace.Protocol"))) |
| __attribute__((objc_runtime_name("MySecretNamespace.Protocol2"))) |
| __attribute__((objc_runtime_name("MySecretNamespace.Protocol3"))) |
| __attribute__((objc_runtime_name("MySecretNamespace.Message"))) |
| @interface Message <Protocol, Protocol2> { |
| @property(retain) Message *msgProp; |
| @property(retain) Message<Protocol3> *msgProtoProp; |
| @property(retain) id<Protocol3> idProtoProp; |
| __attribute__((objc_runtime_name("foo"))) |
| // CHECK: @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR" ={{.*}} global i64 0 |
| // CHECK: @"OBJC_CLASS_$_MySecretNamespace.Message" ={{.*}} global %struct._class_t |
| // CHECK: @"OBJC_METACLASS_$_MySecretNamespace.Message" ={{.*}} global %struct._class_t |
| // CHECK: private unnamed_addr constant [42 x i8] c"T@\22MySecretNamespace.Message\22,&,V_msgProp\00" |
| // CHECK: private unnamed_addr constant [76 x i8] c"T@\22MySecretNamespace.Message<MySecretNamespace.Protocol3>\22,&,V_msgProtoProp\00" |
| // CHECK: private unnamed_addr constant [50 x i8] c"T@\22<MySecretNamespace.Protocol3>\22,&,V_idProtoProp\00" |
| // CHECK: @"OBJC_CLASS_$_foo" = external global %struct._class_t |
| // CHECK: define internal ptr @"\01-[Message MyMethod]" |
| // CHECK: [[IVAR:%.*]] = load i64, ptr @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR" |