summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/eh/terminate1.C
blob: 43cc19eafcbf7fd272eaa967d249196ec867b51a (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
// PR c++/44127

// This is basically the same test as g++.eh/terminate1.C, but that one
// tests runtime behavior and this tests the assembly output.  The test
// should call terminate (because initializing the catch parm throws), but
// from the personality routine, not directly.

// { dg-final { scan-assembler-not "_ZSt9terminatev" } }

// Also there should only be two EH call sites: #0 for throw A() and #1 for
// _Unwind_Resume.  We don't want call site info for __cxa_end_catch, since
// ~A is trivial.

// { dg-final { scan-assembler-not "LEHB2" } }

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

int main()
{
  try
    {
      throw A();
    }
  catch (A) { }
}