// { dg-do run  }
// Testcase for proper handling of rethrow.

#include <stdio.h>

int c, d;

struct A
{
  int i;
  A () { i = ++c; printf ("A() %d\n", i); }
  A (const A&) { i = ++c; printf ("A(const A&) %d\n", i); }
  ~A() { printf ("~A() %d\n", i); ++d; }
};

int
main ()
{
  try
    {
      try
	{
	  printf ("Throwing 1...\n");
	  throw A();
	}
      catch (A)
	{
	  try
	    {
	      printf ("Throwing 2...\n");
	      throw;
	    }
	  catch (A)
	    {
	      printf ("Falling out...\n");
	    }
	}
    }
  catch (A)
    {
      printf ("Caught.\n");
    }
  printf ("c == %d, d == %d\n", c, d);
  return c != d;
}
