diff options
Diffstat (limited to 'test/CodeGenObjC/id-isa-codegen.m')
-rw-r--r-- | test/CodeGenObjC/id-isa-codegen.m | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/CodeGenObjC/id-isa-codegen.m b/test/CodeGenObjC/id-isa-codegen.m new file mode 100644 index 0000000..73b21b0 --- /dev/null +++ b/test/CodeGenObjC/id-isa-codegen.m @@ -0,0 +1,27 @@ +// RUN: clang -cc1 -emit-llvm -o %t %s + +typedef struct objc_class *Class; + +typedef struct objc_object { + Class isa; +} *id; + +@interface I ++ (Class) class; +- (void)meth : (id)object : (id)src_object; ++ (unsigned char) isSubclassOfClass:(Class)aClass ; +@end + +@implementation I ++ (Class) class {return 0;} ++ (unsigned char) isSubclassOfClass:(Class)aClass {return 0;} +- (void)meth : (id)object : (id)src_object { + [object->isa isSubclassOfClass:[I class]]; + + [(*object).isa isSubclassOfClass:[I class]]; + + object->isa = src_object->isa; + (*src_object).isa = (*object).isa; +} +@end + |