// { dg-do run }
#include <stdio.h>
#include <stdlib.h>
#include <exception>
static void
eh_terminate ()
{
printf ("CALLING TERMINATE\n");
exit (1);
}
void
eh_test (int level)
{
try
{
if (level < 2)
eh_test (level + 1);
else
{
printf ("%d: Throwing\n", level);
throw (level);
}
}
catch (int &x)
{
printf ("%d: Got level %d\n",
level, x);
if (level > 0)
throw;
}
}
int main ()
{
std::set_terminate (&eh_terminate);
eh_test (0);
}