OSDN Git Service

/cp
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.other / vtbl2.C
1 // { dg-do run  }
2 // Copyright (C) 2000 Free Software Foundation, Inc.
3 // Contributed by Nathan Sidwell 8 Feb 2000 <nathan@acm.org>
4
5 // vtable construction reorganisation broke this
6
7 // execution test
8
9 #include <stdio.h>
10
11 static int fail = 0;
12
13 void bad (char const *name)
14 {
15   printf ("Bad %s\n", name);
16   fail = 1;
17 }
18 void ok (char const *name)
19 {
20   printf ("Ok %s\n", name);
21 }
22
23 struct Core
24 {
25   virtual ~Core ();
26   virtual void Wibble () {bad (__PRETTY_FUNCTION__);}
27   virtual void Wobble () {bad (__PRETTY_FUNCTION__);}
28   virtual void Bogus  () {bad (__PRETTY_FUNCTION__);}
29 };
30 struct Side
31 {
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__);}  
39 };
40 struct Base : Core
41 {
42   virtual ~Base ();
43   virtual void Bink () {bad (__PRETTY_FUNCTION__);}
44   virtual void Bonk () {bad (__PRETTY_FUNCTION__);}
45   virtual void  Bogus () {bad (__PRETTY_FUNCTION__);}  
46 };
47 struct Multi : Base, Side
48 {
49   virtual ~Multi ();
50   virtual void Stomped () {ok (__PRETTY_FUNCTION__);}
51   virtual void Bunk () {bad (__PRETTY_FUNCTION__);}
52   virtual void Bogus () {bad (__PRETTY_FUNCTION__);}  
53 };
54 struct Trail : Multi
55 {
56   virtual ~Trail ();
57 };
58 Core::~Core () {}
59 Side::~Side () {}
60 Base::~Base () {}
61 Multi::~Multi () {}
62 Trail::~Trail () {}
63
64 void foo (Multi *ptr)
65 {
66   ptr->Stomped ();
67 }
68
69 int main ()
70 {
71   Multi m;
72   Trail t;
73   
74   foo (&m);
75   foo (&t);
76   return fail != 0;
77 }