131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh// { dg-do run { xfail sparc64-*-elf arm-*-pe } }
231ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh// { dg-options "-fexceptions" }
331ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
431ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehclass foo {
531ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehpublic:
631ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  class error {};
731ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
831ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  void cause_error(void) { throw error(); }
931ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh};
1031ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
1131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehint main(void)
1231ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh{
1331ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  foo f;
1431ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  try {
1531ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh    f.cause_error();
1631ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  }
1731ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  catch (foo::error&) {
1831ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh    return 0;
1931ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  }
2031ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  return 1;
2131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh}
22