OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.old-deja/] [g++.mike/] [eh23.C] - Blame information for rev 338

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 305 jeremybenn
// { dg-do run { xfail sparc64-*-elf arm-*-pe } }
2
// { dg-options "-fexceptions" }
3
 
4
#include 
5
#include 
6
 
7
struct double_fault { };
8
int fault_now;
9
 
10
class E {
11
public:
12
  E() { }
13
  E(const E&) {
14
    if (fault_now)
15
      throw double_fault();
16
  }
17
};
18
 
19
void foo() {
20
  try {
21
    throw E();
22
  } catch (...) {
23
    fault_now = 1;
24
    throw;
25
  }
26
}
27
 
28
void bar() {
29
  try {
30
    foo();
31
  } catch (E e) {       // double fault here
32
  }
33
}
34
 
35
void my_terminate() {
36
  exit (0);             // double faults should call terminate
37
}
38
 
39
main() {
40
  std::set_terminate (my_terminate);
41
  try {
42
    bar();
43
  } catch (...) {
44
    return 1;
45
  }
46
  return 1;
47
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.