summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/eh/elide2.C
blob: 7d65d9ee6abc664faa4de4144383533138bb03c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// PR c++/13944

// Verify that we don't call terminate() if initializing the exception
// object throws.

// { dg-do run }

struct A
{
  A() { }
  A(const A&) { throw 1; }
};

A a;

int main()
{
  try
    {
      throw a;
    }
  catch (int)
    {
      return 0;
    }
  catch (A&)
    {
      return 2;
    }
  return 3;
}