aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.mike/p2846b.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.mike/p2846b.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/p2846b.C52
1 files changed, 0 insertions, 52 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p2846b.C b/gcc/testsuite/g++.old-deja/g++.mike/p2846b.C
deleted file mode 100644
index acba70d6e2a..00000000000
--- a/gcc/testsuite/g++.old-deja/g++.mike/p2846b.C
+++ /dev/null
@@ -1,52 +0,0 @@
-// Shows that problem of initializing one object's secondary base from
-// another object via a user defined copy constructor for that base,
-// the pointer for the secondary vtable is not set after implicit
-// copying of the outer class, but rather has the pointer to the main
-// vtable for the secondary base left over from the user defined copy
-// constructor for that base.
-
-// Correct answer is B::beefy.
-// g++ prints A::beefy, which is wrong. Cfront gets it right.
-
-// prms-id: 2846
-
-extern "C" int printf(const char *, ...);
-extern "C" void exit(int);
-
-class B;
-
-class A {
- public:
-
- A(void){}
- A(const A&){}
-
- virtual void print(void) const { }
- B compute(void) const;
-};
-
-class C {
-public:
- C() { }
- C(C& o) { } // with it, things are wrong, without it, they're ok
- virtual void beefy(void) const { printf("A::beefy\n"); exit(1); }
-};
-
-class B : private A, public C {
-public:
- B(const A& x, int){}
- void beefy(void) const { printf("B::beefy\n"); }
-};
-
-B A::compute(void) const
-{
- B sub(*this, 1);
- return sub;
-}
-
-int main ()
-{
- A titi;
- titi.compute().beefy();
- return 0;
-}