2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.other / vtbl2.C
blob5c7721e4271fad5c4367931802d9875edf4ab30f
1 // { dg-do run  }
2 // Copyright (C) 2000 Free Software Foundation, Inc.
3 // Contributed by Nathan Sidwell 8 Feb 2000 <nathan@acm.org>
5 // vtable construction reorganisation broke this
7 // execution test
9 #include <stdio.h>
11 static int fail = 0;
13 void bad (char const *name)
15   printf ("Bad %s\n", name);
16   fail = 1;
18 void ok (char const *name)
20   printf ("Ok %s\n", name);
23 struct Core
25   virtual ~Core ();
26   virtual void Wibble () {bad (__PRETTY_FUNCTION__);}
27   virtual void Wobble () {bad (__PRETTY_FUNCTION__);}
28   virtual void Bogus  () {bad (__PRETTY_FUNCTION__);}
30 struct Side
32   virtual ~Side ();
33   virtual void Arfle () {bad (__PRETTY_FUNCTION__);}
34   virtual void Barfle () {bad (__PRETTY_FUNCTION__);}
35   virtual void Gloop () {bad (__PRETTY_FUNCTION__);}
36   virtual void Glorp () {bad (__PRETTY_FUNCTION__);}
37   virtual void Glump () {bad (__PRETTY_FUNCTION__);}
38   virtual void Bogus  () {bad (__PRETTY_FUNCTION__);}  
40 struct Base : Core
42   virtual ~Base ();
43   virtual void Bink () {bad (__PRETTY_FUNCTION__);}
44   virtual void Bonk () {bad (__PRETTY_FUNCTION__);}
45   virtual void  Bogus () {bad (__PRETTY_FUNCTION__);}  
47 struct Multi : Base, Side
49   virtual ~Multi ();
50   virtual void Stomped () {ok (__PRETTY_FUNCTION__);}
51   virtual void Bunk () {bad (__PRETTY_FUNCTION__);}
52   virtual void Bogus () {bad (__PRETTY_FUNCTION__);}  
54 struct Trail : Multi
56   virtual ~Trail ();
58 Core::~Core () {}
59 Side::~Side () {}
60 Base::~Base () {}
61 Multi::~Multi () {}
62 Trail::~Trail () {}
64 void foo (Multi *ptr)
66   ptr->Stomped ();
69 int main ()
71   Multi m;
72   Trail t;
73   
74   foo (&m);
75   foo (&t);
76   return fail != 0;