xref: /aosp_15_r20/external/clang/test/CodeGenObjCXX/property-object-reference-1.mm (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2*67e74705SXin Li// rdar://6137845
3*67e74705SXin Li
4*67e74705SXin Listruct TCPPObject
5*67e74705SXin Li{
6*67e74705SXin Li TCPPObject(const TCPPObject& inObj);
7*67e74705SXin Li TCPPObject();
8*67e74705SXin Li ~TCPPObject();
9*67e74705SXin Li int filler[64];
10*67e74705SXin Li};
11*67e74705SXin Li
12*67e74705SXin Li
13*67e74705SXin Li@interface MyDocument
14*67e74705SXin Li{
15*67e74705SXin Li@private
16*67e74705SXin Li TCPPObject _cppObject;
17*67e74705SXin Li}
18*67e74705SXin Li@property (atomic, assign, readwrite) const TCPPObject& cppObject;
19*67e74705SXin Li@end
20*67e74705SXin Li
21*67e74705SXin Li@implementation MyDocument
22*67e74705SXin Li
23*67e74705SXin Li@synthesize cppObject = _cppObject;
24*67e74705SXin Li
25*67e74705SXin Li@end
26*67e74705SXin Li
27*67e74705SXin Li// CHECK: [[cppObjectaddr:%.*]] = alloca %struct.TCPPObject*, align 8
28*67e74705SXin Li// CHECK: store %struct.TCPPObject* [[cppObject:%.*]], %struct.TCPPObject** [[cppObjectaddr]], align 8
29*67e74705SXin Li// CHECK:  [[THREE:%.*]] = load %struct.TCPPObject*, %struct.TCPPObject** [[cppObjectaddr]], align 8
30*67e74705SXin Li// CHECK:  [[FOUR:%.*]] = bitcast %struct.TCPPObject* [[THREE]] to i8*
31*67e74705SXin Li// CHECK:  call void @objc_copyStruct(i8* [[TWO:%.*]], i8* [[FOUR]], i64 256, i1 zeroext true, i1 zeroext false)
32