unwind-1.C   [plain text]


/* APPLE LOCAL file 6205688 */
/* { dg-do run } */
#include <stdio.h>

void fn2(int i) __attribute__((noinline));
void fn2(int i) {
  printf("fn2 %d\n", i);
}

int fn3(int i) __attribute__((noinline));
int fn3(int i) {
  if (i) return i+1;
  else throw 1;
}

void fn(int i) __attribute__((noinline));
void fn(int i) {
  if (i) {
    fn2(i);
  } else {
    int j = fn3(i);
    printf("j %d\n", j);
  }
}

volatile int arg = 0;

int main(int argc, char **argv) {
  try {
    fn(arg);
  } catch (int e) {
    printf("caught %d\n", e);
  }
  return 0;
}