// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp 
// 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

@interface F {
  int supervar;
}
@end

@interface G : F {
@public
  int ivar;
}
@end

@implementation G
- (void)foo:(F *)arg {
        int q = arg->supervar;
        int v = ((G *)arg)->ivar;
}
@end

void objc_assign_strongCast(id);
void __CFAssignWithWriteBarrier(void **location, void *value) {
        objc_assign_strongCast((id)value);
}

// radar 7607605
@interface RealClass {
        @public
        int f;
}
@end

@implementation RealClass
@end

@interface Foo {
        id reserved;
}
@end

@implementation Foo
- (void)bar {
        ((RealClass*)reserved)->f = 99;
}
@end
