// APPLE LOCAL file preserve CR2 for save_world prologues
// This testcase failed at -O2 due to a missing EH note describing the PowerPC Condition Register.
// Thanks to Dale Johannesen.

// { dg-do run }
// { dg-options "-fpascal-strings" }
#include <stdlib.h>
#include <stdio.h>
int tick = 1;
int caught_x = 1;
int h() { return 2; }
void f()
{ throw(3); }
extern int h();
void ff() {
  bool xx = h() == 0;
  if ( !xx ) {
    try {
      f();
    } catch (float f) {
      if (!xx) printf("%f\n", f);
    }
  }
}
void g(int y)
{
  bool x = h() != 0;
  if ( x) {
    try {
      ff();
    } catch (int ex) {
      //      if (x) printf("%d\n", ex);
      if (x) { tick++; caught_x = ex; }
    }}
}
int main(int argv, char *argc[])
{
  g(3);
  if (tick != 2 || caught_x != 3)
    abort();
}
