| /* Check @defs() in Objective-C++ */ |
| /* Contributed by Devang Patel <dpatel@apple.com> */ |
| |
| /* { dg-options "-lobjc" } */ |
| /* { dg-do run } */ |
| /* APPLE LOCAL radar 4894756 */ |
| /* { dg-require-effective-target ilp32 } */ |
| /* APPLE LOCAL ARM objc2 */ |
| /* { dg-skip-if "" { arm*-*-darwin* } { "*" } { "" } } */ |
| |
| #include <stdlib.h> |
| #include <objc/objc.h> |
| #include <objc/Object.h> |
| |
| extern void abort(void); |
| |
| @interface A : Object |
| { |
| @public |
| int a; |
| } |
| @end |
| |
| struct A_defs |
| { |
| @defs(A); |
| }; |
| |
| @implementation A |
| - init |
| { |
| a = 42; |
| return self; |
| } |
| @end |
| |
| |
| int main() |
| { |
| A *a = [A init]; |
| struct A_defs *a_defs = (struct A_defs *)a; |
| |
| if (a->a != a_defs->a) |
| abort (); |
| |
| return 0; |
| } |