From 4b454fccf5dce834e4d2d31fc1d0e0be99dee267 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Fri, 8 Jun 2001 14:30:47 +0000 Subject: [PATCH] vbase2.C: New test. * g++.old-deja/g++.abi/vbase2.C: New test. * g++.old-deja/g++.abi/vbase3.C: New test. From-SVN: r43016 --- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/g++.old-deja/g++.abi/vbase2.C | 27 +++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.abi/vbase3.C | 26 ++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.abi/vbase2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.abi/vbase3.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1c83b609247..134d10f6a7e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2001-06-08 Nathan Sidwell + + * g++.old-deja/g++.abi/vbase2.C: New test. + * g++.old-deja/g++.abi/vbase3.C: New test. + 2001-06-08 Nathan Sidwell * g++.old-deja/g++.pt/friend49.C: New test. diff --git a/gcc/testsuite/g++.old-deja/g++.abi/vbase2.C b/gcc/testsuite/g++.old-deja/g++.abi/vbase2.C new file mode 100644 index 00000000000..f8877eb545f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.abi/vbase2.C @@ -0,0 +1,27 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 5 Jun 2001 + +// Bug 3006. Constructor vtables were wrong. + +struct A +{ + virtual ~A() {} +}; + +class B : public virtual A {}; +class C : public virtual B {}; +class D1 : public virtual C {}; +class D2 : public virtual C {}; +class E + : public virtual D1, + public virtual D2 +{ +}; + + +int +main(int argc, char* argv[]) +{ + new E; + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.abi/vbase3.C b/gcc/testsuite/g++.old-deja/g++.abi/vbase3.C new file mode 100644 index 00000000000..9b0ed1c8778 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.abi/vbase3.C @@ -0,0 +1,26 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 5 Jun 2001 + +// Bug 3061. Constructor vtables were wrong. + +class A_base { + public: + virtual void foo() { } +}; +class A_skel : virtual public A_base { }; + +class B_base : virtual public A_base { }; +class B_skel : virtual public B_base, virtual public A_skel { }; + +class C_base : virtual public B_base { }; +class C_skel : virtual public C_base, virtual public B_skel { }; + +class D_base : virtual public C_base { }; +class D_skel : virtual public D_base, virtual public C_skel { }; + +class D_impl : virtual public D_skel { }; + +int main() +{ + D_impl i; +} -- 2.30.2