Merge from mainline (160224:163495).
[official-gcc/graphite-test-results.git] / gcc / testsuite / g++.dg / cpp0x / noexcept04.C
blob8df818610f5fb62ee450bfa8de63445985816c51
1 // Make sure that we call terminate when a noexcept spec is violated.
2 // The function pointers are there to make sure that
3 // the compiler doesn't get clever about optimizing the calls based on
4 // knowledge about the called functions.
6 // { dg-options "-std=c++0x" }
7 // { dg-do run }
9 #include <exception>
10 #include <cstdlib>
12 void my_terminate ()
14   std::exit (0);
17 void g() { throw 1; }
18 void (*p1)() = g;
19 void f() noexcept { p1(); }
20 void (*p2)() = f;
21 void h() { p2(); }
23 int main()
25   std::set_terminate (my_terminate);
27   try { h(); }
28   catch (int) { }
30   return 1;