1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -emit-llvm -o - %s | FileCheck %s 2 // RUN: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm -o - %s | FileCheck %s 3 // rdar: //8808439 4 5 typedef struct { 6 #ifdef __LP64__ 7 unsigned char b[15]; 8 #else 9 unsigned char b[7]; 10 #endif 11 } bools_minus_one; 12 13 typedef 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__ 39 typedef __int128_t dword; 40 #else 41 typedef 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