blob: 589b08ae0eef07202e4542c9357c7cd86d7299c3 [file] [log] [blame]
Stephen Hines176edba2014-12-01 14:53:08 -08001// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin %s -o - | FileCheck %s
2// rdar://16462586
3
4__attribute__((objc_runtime_name("MySecretNamespace.Protocol")))
5@protocol Protocol
6- (void) MethodP;
7+ (void) ClsMethodP;
8@end
9
10__attribute__((objc_runtime_name("MySecretNamespace.Protocol2")))
11@protocol Protocol2
12- (void) MethodP2;
13+ (void) ClsMethodP2;
14@end
15
16__attribute__((objc_runtime_name("MySecretNamespace.Message")))
17@interface Message <Protocol, Protocol2> {
18 id MyIVAR;
19}
20@end
21
22@implementation Message
23- (id) MyMethod {
24 return MyIVAR;
25}
26
27+ (id) MyClsMethod {
28 return 0;
29}
30
31- (void) MethodP{}
32- (void) MethodP2{}
33
34+ (void) ClsMethodP {}
35+ (void) ClsMethodP2 {}
36@end
37
38// rdar://16877359
39__attribute__((objc_runtime_name("foo")))
40@interface SLREarth
41- (instancetype)init;
42+ (instancetype)alloc;
43@end
44
45id Test16877359() {
46 return [SLREarth alloc];
47}
48
49// CHECK: @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR" = global i64
50// CHECK: @"OBJC_CLASS_$_MySecretNamespace.Message" = global %struct._class_t
51// CHECK: @"OBJC_METACLASS_$_MySecretNamespace.Message" = global %struct._class_t
52// CHECK: @"OBJC_CLASS_$_foo" = external global %struct._class_t
53// CHECK: define internal i8* @"\01-[Message MyMethod]"
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -070054// CHECK: [[IVAR:%.*]] = load i64, i64* @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR"