X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=gcc%2Ftestsuite%2Fg%2B%2B.old-deja%2Fg%2B%2B.mike%2Fp2846b.C;fp=gcc%2Ftestsuite%2Fg%2B%2B.old-deja%2Fg%2B%2B.mike%2Fp2846b.C;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=acba70d6e2acb55c67e2d6aefb0dea08a31c5c7e;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git 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 acba70d6..00000000 --- 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; -}