// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-fragile-abi %s -o %t-rw.cpp
// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
// radar 7575882

@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

// CHECK-LP: ((struct G_IMPL *)arg)->ivar

// CHECK-LP: objc_assign_strongCast((id)value)

// CHECK-LP: ((struct RealClass_IMPL *)((RealClass *)((struct Foo_IMPL *)self)->reserved))->f
