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