/* APPLE LOCAL file radar 4951324 */
/* Test that in new objc2 eh, existing declaration of objc_ehtype_vtable
   and OBJC_EHTYPE_id will be used. */
/* { dg-options "-mmacosx-version-min=10.5 -m64 -fobjc-zerocost-exceptions" } */
/* { dg-do compile } */

/* APPLE LOCAL radar 4894756 */
#include "../objc/execute/Object2.h"
#include <stdio.h>
#include <setjmp.h>

int objc_ehtype_vtable;
int OBJC_EHTYPE_id;

@interface Frob: Object
@end

@implementation Frob: Object
@end

static int exc_control = 0;

int proc() {
  if(exc_control) {
    printf ("Throwing (%d)... ", exc_control);
    @throw [Frob new];
  }
  return 1;
}

int foo()
{
        @try {
                return proc();
        }
        @catch (Frob* ex) {
		if(exc_control > 1) {
		  printf("Rethrowing (%d)... ", exc_control);
		  @throw;
		}
		return 0;
        }
	@finally {
		printf("In @finally block (%d)... ", exc_control);
	}
}
