1 // RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp 2 // RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp 3 4 @interface F { 5 int supervar; 6 } 7 @end 8 9 @interface G : F { 10 @public 11 int ivar; 12 } 13 @end 14 15 @implementation G 16 - (void)foo:(F *)arg { 17 int q = arg->supervar; 18 int v = ((G *)arg)->ivar; 19 } 20 @end 21 22 void objc_assign_strongCast(id); 23 void __CFAssignWithWriteBarrier(void **location, void *value) { 24 objc_assign_strongCast((id)value); 25 } 26 27 // radar 7607605 28 @interface RealClass { 29 @public 30 int f; 31 } 32 @end 33 34 @implementation RealClass 35 @end 36 37 @interface Foo { 38 id reserved; 39 } 40 @end 41 42 @implementation Foo 43 - (void)bar { 44 ((RealClass*)reserved)->f = 99; 45 } 46 @end 47