xref: /aosp_15_r20/external/clang/test/CodeGenObjCXX/arc-cxx11-member-init.mm (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1  -triple x86_64-apple-darwin10 -fobjc-arc -std=c++11 -emit-llvm -o - %s | FileCheck %s
2*67e74705SXin Li// rdar://16299964
3*67e74705SXin Li
4*67e74705SXin Li@interface NSObject
5*67e74705SXin Li+ (id)new;
6*67e74705SXin Li@end
7*67e74705SXin Li
8*67e74705SXin Li@interface NSMutableDictionary : NSObject
9*67e74705SXin Li@end
10*67e74705SXin Li
11*67e74705SXin Liclass XClipboardDataSet
12*67e74705SXin Li{
13*67e74705SXin Li  NSMutableDictionary* mClipData = [NSMutableDictionary new];
14*67e74705SXin Li};
15*67e74705SXin Li
16*67e74705SXin Li@interface AppDelegate @end
17*67e74705SXin Li
18*67e74705SXin Li@implementation AppDelegate
19*67e74705SXin Li- (void)applicationDidFinishLaunching
20*67e74705SXin Li{
21*67e74705SXin Li XClipboardDataSet clip;
22*67e74705SXin Li}
23*67e74705SXin Li@end
24*67e74705SXin Li
25*67e74705SXin Li// CHECK: [[mClipData:%.*]] = getelementptr inbounds %class.XClipboardDataSet, %class.XClipboardDataSet*
26*67e74705SXin Li// CHECK: [[ZERO:%.*]] = load %struct._class_t*, %struct._class_t** @"OBJC_CLASSLIST_REFERENCES_$_"
27*67e74705SXin Li// CHECK: [[ONE:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_
28*67e74705SXin Li// CHECK: [[TWO:%.*]] = bitcast %struct._class_t* [[ZERO]] to i8*
29*67e74705SXin Li// CHECK: [[CALL:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* [[TWO]], i8* [[ONE]])
30*67e74705SXin Li// CHECK: [[THREE:%.*]] = bitcast i8* [[CALL]] to [[T:%.*]]*
31*67e74705SXin Li// CHECK: store [[T]]* [[THREE]], [[T]]** [[mClipData]], align 8
32*67e74705SXin Li
33*67e74705SXin Li// rdar://18950072
34*67e74705SXin Listruct Butt { };
35*67e74705SXin Li
36*67e74705SXin Li__attribute__((objc_root_class))
37*67e74705SXin Li@interface Foo {
38*67e74705SXin Li  Butt x;
39*67e74705SXin Li  Butt y;
40*67e74705SXin Li  Butt z;
41*67e74705SXin Li}
42*67e74705SXin Li@end
43*67e74705SXin Li@implementation Foo
44*67e74705SXin Li@end
45*67e74705SXin Li// CHECK-NOT: define internal i8* @"\01-[Foo .cxx_construct
46