From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/testsuite/g++.dg/compat/abi/bitfield1.h | 10 ++++ gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C | 13 +++++ gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C | 16 ++++++ gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C | 15 ++++++ gcc/testsuite/g++.dg/compat/abi/bitfield2.h | 10 ++++ gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C | 13 +++++ gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C | 16 ++++++ gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C | 15 ++++++ gcc/testsuite/g++.dg/compat/abi/pr38736_main.C | 18 +++++++ gcc/testsuite/g++.dg/compat/abi/pr38736_x.C | 15 ++++++ gcc/testsuite/g++.dg/compat/abi/pr38736_y.C | 6 +++ gcc/testsuite/g++.dg/compat/abi/vbase8-10.h | 54 ++++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C | 16 ++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C | 51 +++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C | 65 ++++++++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-21.h | 54 ++++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C | 16 ++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C | 51 +++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C | 65 ++++++++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-22.h | 59 +++++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C | 16 ++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C | 51 +++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C | 65 ++++++++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-4.h | 57 +++++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C | 16 ++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C | 51 +++++++++++++++++++ gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C | 65 ++++++++++++++++++++++++ 27 files changed, 899 insertions(+) create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield1.h create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield2.h create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/pr38736_main.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/pr38736_x.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/pr38736_y.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-10.h create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-21.h create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-22.h create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-4.h create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C create mode 100644 gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C (limited to 'gcc/testsuite/g++.dg/compat/abi') diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1.h b/gcc/testsuite/g++.dg/compat/abi/bitfield1.h new file mode 100644 index 000000000..09d64162f --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1.h @@ -0,0 +1,10 @@ +typedef int Int; +typedef signed int SInt; +typedef unsigned int UInt; + +struct A +{ + SInt bitS : 1; // signed + UInt bitU : 1; // unsigned + Int bit : 1; // signedness by -f{signed,unsigned}-bitfields +}; diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C b/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C new file mode 100644 index 000000000..ce9aa1f09 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C @@ -0,0 +1,13 @@ +// { dg-options "-w -ansi -pedantic-errors -funsigned-bitfields" } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 15 Dec 2001 +// Split into pieces for binary compatibility testing October 2002 + +extern void bitfield1_x (void); + +int +main () +{ + bitfield1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C b/gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C new file mode 100644 index 000000000..727632af8 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C @@ -0,0 +1,16 @@ +// { dg-options "-w -ansi -pedantic-errors -funsigned-bitfields" } + +#include "bitfield1.h" + +extern void bitfield1_y (A& a); + +void bitfield1_x () +{ + A a; + + a.bitS = 1; + a.bitU = 1; + a.bit = 1; + + bitfield1_y (a); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C b/gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C new file mode 100644 index 000000000..282776718 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C @@ -0,0 +1,15 @@ +// { dg-options "-w -ansi -pedantic-errors -funsigned-bitfields" } + +extern "C" void abort (void); + +#include "bitfield1.h" + +void bitfield1_y (A& a) +{ + if (a.bitS != -1) + abort (); + if (a.bitU != 1) + abort (); + if (a.bit != 1) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2.h b/gcc/testsuite/g++.dg/compat/abi/bitfield2.h new file mode 100644 index 000000000..09d64162f --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2.h @@ -0,0 +1,10 @@ +typedef int Int; +typedef signed int SInt; +typedef unsigned int UInt; + +struct A +{ + SInt bitS : 1; // signed + UInt bitU : 1; // unsigned + Int bit : 1; // signedness by -f{signed,unsigned}-bitfields +}; diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C b/gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C new file mode 100644 index 000000000..4169843f9 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C @@ -0,0 +1,13 @@ +// { dg-options "-w -ansi -pedantic-errors -fsigned-bitfields" } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 15 Dec 2001 +// Split into pieces for binary compatibility testing October 2002 + +extern void bitfield1_x (void); + +int +main () +{ + bitfield1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C b/gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C new file mode 100644 index 000000000..080d21b41 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C @@ -0,0 +1,16 @@ +// { dg-options "-w -ansi -pedantic-errors -fsigned-bitfields" } + +#include "bitfield1.h" + +extern void bitfield1_y (A& a); + +void bitfield1_x () +{ + A a; + + a.bitS = 1; + a.bitU = 1; + a.bit = 1; + + bitfield1_y (a); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C b/gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C new file mode 100644 index 000000000..d27578328 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C @@ -0,0 +1,15 @@ +// { dg-options "-w -ansi -pedantic-errors -fsigned-bitfields" } + +extern "C" void abort (void); + +#include "bitfield1.h" + +void bitfield1_y (A& a) +{ + if (a.bitS != -1) + abort (); + if (a.bitU != 1) + abort (); + if (a.bit != -1) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/pr38736_main.C b/gcc/testsuite/g++.dg/compat/abi/pr38736_main.C new file mode 100644 index 000000000..b9f6ac898 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/pr38736_main.C @@ -0,0 +1,18 @@ +/* PR target/38736 */ +/* { dg-skip-if "attribute ((aligned))" { ! { i?86-*-* x86_64-*-* } } } */ +/* { dg-require-effective-target avx } */ + +/* Test compatibility of attribute ((aligned)) with and without -mavx. */ + +extern int aligned_x (void); +extern int aligned_y_avx (void); +extern "C" void abort (void); + +int +main () +{ + if (aligned_x () != aligned_y_avx ()) + abort (); + + return 0; +} diff --git a/gcc/testsuite/g++.dg/compat/abi/pr38736_x.C b/gcc/testsuite/g++.dg/compat/abi/pr38736_x.C new file mode 100644 index 000000000..aeab257aa --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/pr38736_x.C @@ -0,0 +1,15 @@ +/* PR target/38736 */ +/* { dg-options "-O2" } */ + +struct alignment_test_struct +{ + char space[4] __attribute__((__aligned__)); +}; + +extern int aligned_x (void); + +int +aligned_x (void) +{ + return __alignof__(struct alignment_test_struct); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/pr38736_y.C b/gcc/testsuite/g++.dg/compat/abi/pr38736_y.C new file mode 100644 index 000000000..bade1b292 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/pr38736_y.C @@ -0,0 +1,6 @@ +/* PR target/38736 */ +/* { dg-options "-O2 -mavx" } */ + +#define aligned_x aligned_y_avx + +#include "pr38736_x.C" diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-10.h new file mode 100644 index 000000000..aee0b6b49 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10.h @@ -0,0 +1,54 @@ +class C0 +{ public: int i0; }; +class C1 + : public C0 +{ public: int i1; }; +class C2 + : public C1 + , virtual public C0 +{ public: int i2; }; +class C3 + : public C1 + , public C2 + , virtual public C0 +{ public: int i3; }; +class C4 + : virtual public C1 + , virtual public C0 + , virtual public C3 + , public C2 +{ public: int i4; }; +class C5 + : public C3 + , virtual public C0 + , virtual public C2 +{ public: int i5; }; +class C6 + : public C1 + , public C2 + , virtual public C5 + , virtual public C3 + , virtual public C0 +{ public: int i6; }; +class C7 + : public C1 + , virtual public C5 + , virtual public C4 + , virtual public C2 + , virtual public C0 + , virtual public C6 +{ public: int i7; }; +class C8 + : virtual public C4 + , public C3 + , public C0 + , virtual public C7 + , virtual public C6 +{ public: int i8; }; +class C9 + : virtual public C0 + , public C4 + , public C8 + , public C1 + , public C6 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C new file mode 100644 index 000000000..606c0fe2f --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 26 Jul 2001 +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 10. Horribly complicated class hierarchy + +extern void vbase8_10_x (void); + +int +main () +{ + vbase8_10_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C new file mode 100644 index 000000000..c56d080eb --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C @@ -0,0 +1,51 @@ +// { dg-options -w } + +#include "vbase8-10.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_10_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C new file mode 100644 index 000000000..5364ed6b7 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C @@ -0,0 +1,65 @@ +// { dg-options -w } + +extern "C" void abort (void); + +#include "vbase8-10.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-21.h new file mode 100644 index 000000000..cd510e2ce --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21.h @@ -0,0 +1,54 @@ +class C0 +{ public: int i0; }; +class C1 + : virtual public C0 +{ public: int i1; }; +class C2 + : virtual public C1 + , virtual public C0 +{ public: int i2; }; +class C3 + : virtual public C2 + , virtual public C1 +{ public: int i3; }; +class C4 + : virtual public C2 + , public C0 + , public C1 +{ public: int i4; }; +class C5 + : virtual public C0 + , public C2 + , virtual public C1 + , virtual public C3 + , virtual public C4 +{ public: int i5; }; +class C6 + : virtual public C1 + , virtual public C3 + , public C0 + , public C2 + , virtual public C4 +{ public: int i6; }; +class C7 + : virtual public C5 + , public C2 + , public C6 + , virtual public C0 + , public C3 +{ public: int i7; }; +class C8 + : virtual public C5 + , public C7 + , virtual public C0 + , virtual public C2 + , virtual public C6 +{ public: int i8; }; +class C9 + : virtual public C2 + , virtual public C4 + , public C1 + , virtual public C0 + , public C7 + , public C5 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C new file mode 100644 index 000000000..16a0a3cd3 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 26 Jul 2001 +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 10. Horribly complicated class hierarchy + +extern void vbase8_21_x (void); + +int +main () +{ + vbase8_21_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C new file mode 100644 index 000000000..818eade03 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C @@ -0,0 +1,51 @@ +// { dg-options -w } + +#include "vbase8-21.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_21_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C new file mode 100644 index 000000000..512613935 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C @@ -0,0 +1,65 @@ +// { dg-options -w } + +extern "C" void abort (void); + +#include "vbase8-21.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-22.h new file mode 100644 index 000000000..e19e93eae --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22.h @@ -0,0 +1,59 @@ +class C0 +{ public: int i0; }; +class C1 + : public C0 +{ public: int i1; }; +class C2 + : public C1 + , virtual public C0 +{ public: int i2; }; +class C3 + : virtual public C0 + , virtual public C2 + , virtual public C1 +{ public: int i3; }; +class C4 + : virtual public C2 + , public C1 + , virtual public C3 + , public C0 +{ public: int i4; }; +class C5 + : virtual public C0 + , virtual public C4 + , public C1 + , virtual public C2 + , virtual public C3 +{ public: int i5; }; +class C6 + : public C0 + , virtual public C1 + , public C5 + , public C2 + , virtual public C3 + , virtual public C4 +{ public: int i6; }; +class C7 + : virtual public C1 + , public C5 + , virtual public C6 + , virtual public C4 + , virtual public C3 + , virtual public C0 +{ public: int i7; }; +class C8 + : virtual public C6 + , virtual public C1 + , virtual public C2 + , public C3 + , virtual public C4 +{ public: int i8; }; +class C9 + : public C4 + , virtual public C2 + , virtual public C8 + , public C3 + , public C1 + , public C6 + , public C5 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C new file mode 100644 index 000000000..6455a2efc --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 20 Nov 2001 +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 22. Horribly complicated class hierarchy + +extern void vbase8_22_x (void); + +int +main () +{ + vbase8_22_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C new file mode 100644 index 000000000..49f021adf --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C @@ -0,0 +1,51 @@ +// { dg-options -w } + +#include "vbase8-22.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_22_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C new file mode 100644 index 000000000..49ab04a87 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C @@ -0,0 +1,65 @@ +// { dg-options -w } + +extern "C" void abort (void); + +#include "vbase8-22.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-4.h new file mode 100644 index 000000000..b183fbe4f --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4.h @@ -0,0 +1,57 @@ +class C0 +{ public: int i0; }; +class C1 + : virtual public C0 +{ public: int i1; }; +class C2 + : public C0 + , public C1 +{ public: int i2; }; +class C3 + : virtual public C0 + , public C1 + , public C2 +{ public: int i3; }; +class C4 + : public C2 + , public C3 + , virtual public C1 + , virtual public C0 +{ public: int i4; }; +class C5 + : virtual public C2 + , public C1 + , public C0 +{ public: int i5; }; +class C6 + : virtual public C0 + , virtual public C5 + , public C1 + , public C3 + , public C4 +{ public: int i6; }; +class C7 + : public C6 + , virtual public C0 + , public C1 + , public C2 + , virtual public C4 +{ public: int i7; }; +class C8 + : public C2 + , virtual public C6 + , virtual public C7 + , public C5 + , public C3 + , virtual public C4 +{ public: int i8; }; +class C9 + : public C5 + , virtual public C3 + , virtual public C8 + , public C0 + , public C2 + , public C7 + , public C6 + , public C4 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C new file mode 100644 index 000000000..f5e5e3824 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 20 Nov 2001 +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 4. Horribly complicated class hierarchy + +extern void vbase8_4_x (void); + +int +main () +{ + vbase8_4_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C new file mode 100644 index 000000000..db60cc6ee --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C @@ -0,0 +1,51 @@ +// { dg-options -w } + +#include "vbase8-4.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_4_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C new file mode 100644 index 000000000..24d5046c9 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C @@ -0,0 +1,65 @@ +// { dg-options -w } + +extern "C" void abort (void); + +#include "vbase8-4.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} -- cgit v1.2.3