/* APPLE LOCAL file mainline */
/* Check that taking the address of a local variable marked 'volatile'
   by the compiler does not generate untoward errors.  */
/* Developed by Ziemowit Laski <zlaski@apple.com>.  */

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


void foo (int *arg1, int *arg2)
{
  *arg1 = *arg2;
}

void bar (int arg) {
  int rcvr;

  @try {
    rcvr = arg;
  }
  @finally {
    int *rcvr0 = &rcvr;
    foo (rcvr0, &arg);
  }
}

