Home | History | Annotate | Download | only in jni
      1 // { dg-do run  }
      2 // Testcase for proper handling of rethrow.
      3 
      4 #include <stdio.h>
      5 
      6 int c, d;
      7 
      8 struct A
      9 {
     10   int i;
     11   A () { i = ++c; printf ("A() %d\n", i); }
     12   A (const A&) { i = ++c; printf ("A(const A&) %d\n", i); }
     13   ~A() { printf ("~A() %d\n", i); ++d; }
     14 };
     15 
     16 int
     17 main ()
     18 {
     19   try
     20     {
     21       try
     22 	{
     23 	  printf ("Throwing 1...\n");
     24 	  throw A();
     25 	}
     26       catch (A)
     27 	{
     28 	  try
     29 	    {
     30 	      printf ("Throwing 2...\n");
     31 	      throw;
     32 	    }
     33 	  catch (A)
     34 	    {
     35 	      printf ("Throwing 3...\n");
     36 	      throw A();
     37 	    }
     38 	}
     39     }
     40   catch (A)
     41     {
     42       printf ("Caught.\n");
     43     }
     44   printf ("c == %d, d == %d\n", c, d);
     45   return c != d;
     46 }
     47