| // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o %t %s |
| // RUN: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm -o %t %s |
| // RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o %t %s |
| |
| @interface Object |
| - (id) alloc; |
| - (id) init; |
| @end |
| |
| extern void abort(void); |
| |
| #define CHECK_IF(expr) if(!(expr)) abort(); |
| |
| @interface Base: Object |
| { |
| int full; |
| int full2: 32; |
| int _refs: 8; |
| int field2: 3; |
| unsigned f3: 8; |
| short cc; |
| unsigned g: 16; |
| int r2: 8; |
| int r3: 8; |
| int r4: 2; |
| int r5: 8; |
| char c; |
| } |
| - (void)setValues; |
| @end |
| |
| @interface Derived: Base |
| { |
| char d; |
| int _field3: 6; |
| } |
| - (void)checkValues; |
| @end |
| |
| @implementation Base |
| -(void)setValues { |
| full = 1; |
| full2 = 2; |
| _refs = 3; |
| field2 = 1; |
| f3 = 6; |
| cc = 7; |
| g = 8; |
| r2 = 9; |
| r3 = 10; |
| r4 = 1; |
| r5 = 12; |
| c = 13; |
| } |
| @end |
| |
| @implementation Derived |
| -(void)checkValues { |
| CHECK_IF(full == 1); |
| CHECK_IF(full2 == 2); |
| CHECK_IF(_refs == 3); |
| CHECK_IF(field2 == 1); |
| CHECK_IF(f3 == 6); |
| CHECK_IF(cc == 7); |
| CHECK_IF(g == 8); |
| CHECK_IF(r2 == 9); |
| CHECK_IF(r3 == 10); |
| CHECK_IF(r4 == 1); |
| CHECK_IF(r5 == 12); |
| CHECK_IF(c == 13); |
| } |
| @end |
| |
| int main(void) { |
| Derived *obj = [[Derived alloc] init]; |
| |
| [obj setValues]; |
| [obj checkValues]; |
| |
| return 0; |
| } |