aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.mike/p3708.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/p3708.C90
1 files changed, 4 insertions, 86 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p3708.C b/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
index 2f5e401e56d..a6d00e8ef89 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
@@ -1,86 +1,4 @@
-// prms-id: 3708
-
-extern "C" void printf (char *, ...);
-extern "C" int atoi (char *);
-
-void *ptr;
-
-class A {
-public:
- A() { printf ("A is constructed.\n"); }
- virtual xx(int doit) { printf ("A is destructed.\n"); }
-};
-
-class A1 {
-public:
- A1() { printf ("A1 is constructed.\n"); }
- virtual xx(int doit) { printf ("A1 is destructed.\n"); }
-};
-
-class B : public virtual A, public A1 {
-public:
- B() { printf ("B is constructed.\n"); }
- virtual xx(int doit) {
- printf ("B is destructed.\n");
- A1::xx (1);
- if (doit) A::xx (1);
- }
-};
-
-int num;
-
-class C : public virtual A, public B {
-public:
- C() { ++num; printf ("C is constructed.\n");
- ptr = this;
- }
- virtual xx(int doit) {
- --num;
- if (ptr != this)
- printf("FAIL\n%x != %x\n", ptr, this);
- printf ("C is destructed.\n");
- B::xx (0);
- if (doit) A::xx (1);
- }
-};
-
-void fooA(A *a) {
- printf ("Casting to A!\n");
- a->xx (1);
-}
-void fooA1(A1 *a) {
- printf ("Casting to A1!\n");
- a->xx (1);
-}
-
-void fooB(B *b) {
- printf ("Casting to B!\n");
- b->xx (1);
-}
-
-void fooC(C *c) {
- printf ("Casting to C!\n");
- c->xx (1);
-}
-
-int main(int argc, char *argv[]) {
- printf ("*** Construct C object!\n");
- C *c = new C();
-
- int i = 0;
-
- printf ("*** Try to delete the casting pointer!\n");
- switch (i)
- {
- case 0: fooA1(c);
- break;
- case 1: fooA(c);
- break;
- case 2: fooB(c);
- break;
- case 3: fooC(c);
- break;
- }
-
- return num!=0;
-}
+ virtual void xx(int doit) { printf ("A is destructed.\n"); }
+ virtual void xx(int doit) { printf ("A1 is destructed.\n"); }
+ virtual void xx(int doit) {
+ virtual void xx(int doit) {