/* APPLE LOCAL begin radar 4204796 */
/* Ensure that typeof()-typed variables inside the @try { } block that
   "inherit" their EH-volatileness from other variables in the stack frame
   do not trigger "discards qualifiers from target pointer type" warnings.  */

/* { dg-options "-fobjc-exceptions -fnext-runtime" } */
/* { dg-do compile } */

typedef volatile int IOSharedLockData;

__attribute__((objc_root_class)) @interface TestMyTests
- (void) testSpoon;
@end

extern void some_func (int *);

@implementation TestMyTests
- (void) testSpoon {
  int i = 5;

  do {
    @try {
      typeof(i) j = 6;
      some_func (&j);
    }
    @catch (id exc) {
      @throw;
    }
  } while(0);

  do {
    @try {
      typeof(i) j = 7;
      some_func (&j);
    }
    @catch (id exc) {
      @throw;
    }
  } while(0);

  do {
    @try {
      typeof(i) j = 8;
      some_func (&j);
    }
    @catch (id exc) {
      @throw;
    }
  } while(0);
      
}
@end
/* APPLE LOCAL end radar 4204796 */
