/* APPLE LOCAL file 4540451 */
/* Test that the new-ABI ivar symbols look like OBJC_IVAR_$_ClassName.IvarName
   not like .objc_ivar.ClassName.IvarName */
/* { dg-options "-mmacosx-version-min=10.5 -fobjc-abi-version=2" } */
/* { dg-do compile { target *-*-darwin* } } */

@interface Rootclass { 
} @end

@interface Superclass : Rootclass { 
@public
  double FILLER;
  int IVAR; 

  struct INNER {
	int filler;
	int MyMainField;
  } F1;

@private
  int private_ivar;

}
- (int) IVAR_VALUE_FUNC;
@end

@implementation Superclass : Rootclass
- (int) IVAR_VALUE_FUNC { return IVAR + FILLER + private_ivar; }
@end

Superclass *PPPPPP;

int main()
{
	int III = PPPPPP->F1.MyMainField;
	if (III)
	  return PPPPPP->IVAR + PPPPPP->IVAR - PPPPPP->FILLER;
	else
	  return PPPPPP->FILLER;
}
/* { dg-final { scan-assembler "OBJC_IVAR_\\\$_" } } */
/* { dg-final { scan-assembler-not "\\\.objc_ivar\\\." } } */
