1// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -emit-llvm -o - %s | FileCheck %s
2// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5  -emit-llvm -o - %s | FileCheck %s
3// rdar: //8808439
4
5typedef struct {
6#ifdef __LP64__
7	unsigned char b[15];
8#else
9	unsigned char b[7];
10#endif
11} bools_minus_one;
12
13typedef struct {
14#ifdef __LP64__
15	unsigned char b[16];
16#else
17	unsigned char b[8];
18#endif
19} bools;
20
21
22@interface Foo
23{
24#ifndef __LP64__
25       bools x;
26       bools_minus_one y;
27#endif
28}
29@property(assign) bools bools_p;
30@property(assign) bools_minus_one bools_minus_one_p;
31@end
32
33@implementation Foo
34@synthesize bools_p=x;
35@synthesize bools_minus_one_p=y;
36@end
37
38#ifdef __LP64__
39typedef __int128_t dword;
40#else
41typedef long long int dword;
42#endif
43
44@interface Test_dwords
45{
46#ifndef __LP64__
47       dword dw;
48#endif
49}
50@property(assign) dword dword_p;
51@end
52
53@implementation Test_dwords
54@synthesize dword_p=dw;
55@end
56
57
58@interface Test_floats
59{
60  float fl;
61  double d;
62  long double ld;
63}
64@property(assign) float fl_p;
65@property(assign) double  d_p;
66@property(assign) long double ld_p;
67@end
68
69@implementation Test_floats
70@synthesize fl_p = fl;
71@synthesize d_p = d;
72@synthesize ld_p = ld;
73@end
74
75// CHECK: call void @objc_copyStruct
76// CHECK: call void @objc_copyStruct
77// CHECK: call void @objc_copyStruct
78// CHECK: call void @objc_copyStruct
79// CHECK: call void @objc_copyStruct
80// CHECK: call void @objc_copyStruct
81