2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / g++.dg / init / ctor1.C
blobaeb509bfa5d64956dbffaee91b30bd4e686dbec1
1 // { dg-do run }
3 // Copyright (C) 2002 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 12 Oct 2002 <nathan@codesourcery.com>
6 // From WindRiver SPR 80797
7 // We were inadvertently SAVE_EXPRing volatile arrays during delete[]
9 struct A
11   A *ptr;
12   static int ok;
13   
14   A () {ptr = this;}
15   ~A () {ok = ptr == this;}
17 int A::ok = -1;
19 struct B
21   B *ptr;
22   static int ok;
23   
24   B () {ptr = this;}
25   ~B () {ok = ptr == this;}
27 int B::ok = -1;
29 struct C
31   A volatile a;
32   B volatile b[1];
34   C ();
37 C::C ()
39   throw 1;
42 int main ()
44   try
45     {
46       C c;
47     }
48   catch (...)
49     {
50       if (A::ok != 1)
51         return 1;
52       if (B::ok != 1)
53         return 2;
54       return 0;
55     }
56   return 3;