OSDN Git Service

Add TLS checks to ObjC
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / objc.dg / isa-field-1.m
1 /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects.  */
2 /* { dg-do compile } */
3
4 #include "../objc-obj-c++-shared/Object1.h"
5
6 @interface Object (Test)
7 - (Class) test1: (id)object;
8 @end
9
10 @interface Derived: Object
11 - (Class) test2: (id)object;
12 @end
13
14 @implementation Object (Test)
15
16 Class test1(id object) {
17 #ifdef __NEXT_RUNTIME__
18     Class cls = object->isa;
19 #else
20     Class cls = object->class_pointer;
21 #endif
22     return cls;
23 }
24 - (Class) test1: (id)object {
25 #ifdef __NEXT_RUNTIME__
26     Class cls = object->isa;
27 #else
28     Class cls = object->class_pointer;
29 #endif
30     return cls;
31 }
32
33 @end
34
35 @implementation Derived
36
37 Class test2(id object) {
38 #ifdef __NEXT_RUNTIME__
39     Class cls = object->isa;
40 #else
41     Class cls = object->class_pointer;
42 #endif
43     return cls;
44 }
45 - (Class) test2: (id)object {
46 #ifdef __NEXT_RUNTIME__
47     Class cls = object->isa;
48 #else
49     Class cls = object->class_pointer;
50 #endif
51     return cls;
52 }
53
54 @end
55
56 Class test3(id object) {
57 #ifdef __NEXT_RUNTIME__
58     Class cls = object->isa;
59 #else
60     Class cls = object->class_pointer;
61 #endif
62     return cls;
63 }