/* APPLE LOCAL file radar 6230701 */
/* Test that no trampoline is generated for this test case. */
/* { dg-do run { target *-*-darwin[1-2][0-9]* } } */
/* { dg-options "-mmacosx-version-min=10.6 -ObjC++ -framework Foundation -O0" { target *-*-darwin* } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */

#import <Foundation/NSObject.h>

#import <stdio.h>

extern "C" void abort(void);
extern "C" void __enable_execute_stack ()
{
	abort();
}

@interface A : NSObject
- (int)bork:(int)i;
@end

@implementation A
- (int)bork:(int)i {
  printf("i == %d\n", i);
  return i + 37;
}
@end

@interface B : A
- (id)foo:(id)i;
@end

@implementation B
- (id)foo:(id)i {
  printf("Hello world\n");
}

- (id)bar:(int)i {
  int  xnew;

  [self foo:
    ^() {
      __block int xnew;
      xnew = [super bork:i];
    }];
}
@end

int main() {
  B *b = [[B alloc] init];

  [b foo:0];
  [b bar:0];
  [b release];
  return 0;
}

