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++.old-deja/g++.law/access1.C | 34 +++ gcc/testsuite/g++.old-deja/g++.law/access2.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/access3.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/access4.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/access5.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/arg1.C | 32 +++ gcc/testsuite/g++.old-deja/g++.law/arg10.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/arg11.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/arg2.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/arg3.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/arg4.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/arg5.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/arg6.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/arg7.C | 33 +++ gcc/testsuite/g++.old-deja/g++.law/arg8.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/arg9.C | 39 +++ gcc/testsuite/g++.old-deja/g++.law/arm1.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/arm10.C | 9 + gcc/testsuite/g++.old-deja/g++.law/arm11.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/arm12.C | 49 ++++ gcc/testsuite/g++.old-deja/g++.law/arm13.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/arm14.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/arm15.C | 55 ++++ gcc/testsuite/g++.old-deja/g++.law/arm16.C | 14 + gcc/testsuite/g++.old-deja/g++.law/arm2.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/arm3.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/arm4.C | 29 +++ gcc/testsuite/g++.old-deja/g++.law/arm5.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/arm6.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/arm7.C | 41 +++ gcc/testsuite/g++.old-deja/g++.law/arm8.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/arm9.C | 39 +++ gcc/testsuite/g++.old-deja/g++.law/array1.C | 32 +++ gcc/testsuite/g++.old-deja/g++.law/array2.C | 10 + gcc/testsuite/g++.old-deja/g++.law/bad-error1.C | 14 + gcc/testsuite/g++.old-deja/g++.law/bad-error3.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/bad-error4.C | 14 + gcc/testsuite/g++.old-deja/g++.law/bad-error6.C | 26 ++ gcc/testsuite/g++.old-deja/g++.law/bad-error7.C | 30 +++ gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C | 9 + gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C | 43 +++ gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C | 7 + gcc/testsuite/g++.old-deja/g++.law/builtin1.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/casts1.C | 13 + gcc/testsuite/g++.old-deja/g++.law/casts2.C | 39 +++ gcc/testsuite/g++.old-deja/g++.law/casts3.C | 9 + gcc/testsuite/g++.old-deja/g++.law/code-gen1.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/code-gen2.C | 35 +++ gcc/testsuite/g++.old-deja/g++.law/code-gen4.C | 31 +++ gcc/testsuite/g++.old-deja/g++.law/code-gen5.C | 287 +++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.law/copy1.C | 67 +++++ gcc/testsuite/g++.old-deja/g++.law/copy2.C | 35 +++ gcc/testsuite/g++.old-deja/g++.law/ctors1.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/ctors10.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/ctors11.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/ctors12.C | 34 +++ gcc/testsuite/g++.old-deja/g++.law/ctors13.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/ctors14.C | 43 +++ gcc/testsuite/g++.old-deja/g++.law/ctors15.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/ctors16.C | 50 ++++ gcc/testsuite/g++.old-deja/g++.law/ctors17.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/ctors18.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/ctors19.C | 33 +++ gcc/testsuite/g++.old-deja/g++.law/ctors2.C | 70 +++++ gcc/testsuite/g++.old-deja/g++.law/ctors20.C | 35 +++ gcc/testsuite/g++.old-deja/g++.law/ctors21.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/ctors3.C | 29 +++ gcc/testsuite/g++.old-deja/g++.law/ctors4.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/ctors5.C | 37 +++ gcc/testsuite/g++.old-deja/g++.law/ctors6.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/ctors7.C | 35 +++ gcc/testsuite/g++.old-deja/g++.law/ctors8.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/ctors9.C | 40 +++ gcc/testsuite/g++.old-deja/g++.law/cvt1.C | 12 + gcc/testsuite/g++.old-deja/g++.law/cvt10.C | 60 +++++ gcc/testsuite/g++.old-deja/g++.law/cvt11.C | 34 +++ gcc/testsuite/g++.old-deja/g++.law/cvt12.C | 30 +++ gcc/testsuite/g++.old-deja/g++.law/cvt13.C | 19 ++ gcc/testsuite/g++.old-deja/g++.law/cvt14.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/cvt15.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/cvt16.C | 30 +++ gcc/testsuite/g++.old-deja/g++.law/cvt17.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/cvt18.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/cvt19.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/cvt2.C | 42 +++ gcc/testsuite/g++.old-deja/g++.law/cvt20.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/cvt21.C | 36 +++ gcc/testsuite/g++.old-deja/g++.law/cvt22.C | 14 + gcc/testsuite/g++.old-deja/g++.law/cvt23.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/cvt3.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/cvt4.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/cvt5.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/cvt6.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/cvt7.C | 81 ++++++ gcc/testsuite/g++.old-deja/g++.law/cvt8.C | 35 +++ gcc/testsuite/g++.old-deja/g++.law/cvt9.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/dossier1.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/dtors1.C | 13 + gcc/testsuite/g++.old-deja/g++.law/dtors2.C | 41 +++ gcc/testsuite/g++.old-deja/g++.law/dtors3.C | 38 +++ gcc/testsuite/g++.old-deja/g++.law/dtors4.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/dtors5.C | 34 +++ gcc/testsuite/g++.old-deja/g++.law/enum1.C | 14 + gcc/testsuite/g++.old-deja/g++.law/enum2.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/enum3.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/enum4.C | 30 +++ gcc/testsuite/g++.old-deja/g++.law/enum6.C | 19 ++ gcc/testsuite/g++.old-deja/g++.law/enum7.C | 14 + gcc/testsuite/g++.old-deja/g++.law/enum9.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/except1.C | 29 +++ gcc/testsuite/g++.old-deja/g++.law/except2.C | 13 + gcc/testsuite/g++.old-deja/g++.law/except3.C | 50 ++++ gcc/testsuite/g++.old-deja/g++.law/except4.C | 34 +++ gcc/testsuite/g++.old-deja/g++.law/except5.C | 40 +++ gcc/testsuite/g++.old-deja/g++.law/except6.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/friend1.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/friend4.C | 19 ++ gcc/testsuite/g++.old-deja/g++.law/friend5.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/global-init1.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/incdec1.C | 47 ++++ gcc/testsuite/g++.old-deja/g++.law/init1.C | 26 ++ gcc/testsuite/g++.old-deja/g++.law/init10.C | 26 ++ gcc/testsuite/g++.old-deja/g++.law/init11.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/init13.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/init14.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/init2.C | 9 + gcc/testsuite/g++.old-deja/g++.law/init3.C | 12 + gcc/testsuite/g++.old-deja/g++.law/init4.C | 13 + gcc/testsuite/g++.old-deja/g++.law/init5.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/init6.C | 13 + gcc/testsuite/g++.old-deja/g++.law/init7.C | 11 + gcc/testsuite/g++.old-deja/g++.law/init8.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/init9.C | 36 +++ gcc/testsuite/g++.old-deja/g++.law/inline4.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/inline6.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/inline7.C | 13 + gcc/testsuite/g++.old-deja/g++.law/mentor1.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/missed-error1.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/missed-error2.C | 37 +++ gcc/testsuite/g++.old-deja/g++.law/missed-error3.C | 124 +++++++++ gcc/testsuite/g++.old-deja/g++.law/missing1.C | 12 + gcc/testsuite/g++.old-deja/g++.law/nest1.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/nest2.C | 13 + gcc/testsuite/g++.old-deja/g++.law/nest3.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/nest4.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/nest5.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/operators10.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/operators11.C | 36 +++ gcc/testsuite/g++.old-deja/g++.law/operators12.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/operators13.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/operators14.C | 10 + gcc/testsuite/g++.old-deja/g++.law/operators15.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/operators16.C | 30 +++ gcc/testsuite/g++.old-deja/g++.law/operators17.C | 12 + gcc/testsuite/g++.old-deja/g++.law/operators18.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/operators19.C | 19 ++ gcc/testsuite/g++.old-deja/g++.law/operators2.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/operators21.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/operators22.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/operators23.C | 36 +++ gcc/testsuite/g++.old-deja/g++.law/operators24.C | 14 + gcc/testsuite/g++.old-deja/g++.law/operators25.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/operators27.C | 34 +++ gcc/testsuite/g++.old-deja/g++.law/operators28.C | 30 +++ gcc/testsuite/g++.old-deja/g++.law/operators29.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/operators3.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/operators30.C | 26 ++ gcc/testsuite/g++.old-deja/g++.law/operators31.C | 19 ++ gcc/testsuite/g++.old-deja/g++.law/operators32.C | 57 ++++ gcc/testsuite/g++.old-deja/g++.law/operators33.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/operators34.C | 12 + gcc/testsuite/g++.old-deja/g++.law/operators4.C | 32 +++ gcc/testsuite/g++.old-deja/g++.law/operators6.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/operators8.C | 52 ++++ gcc/testsuite/g++.old-deja/g++.law/operators9.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/parsing1.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/parsing10.C | 32 +++ gcc/testsuite/g++.old-deja/g++.law/parsing2.C | 11 + gcc/testsuite/g++.old-deja/g++.law/parsing3.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/parsing4.C | 10 + gcc/testsuite/g++.old-deja/g++.law/parsing5.C | 11 + gcc/testsuite/g++.old-deja/g++.law/parsing6.C | 15 ++ gcc/testsuite/g++.old-deja/g++.law/parsing7.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/parsing8.C | 31 +++ gcc/testsuite/g++.old-deja/g++.law/parsing9.C | 32 +++ gcc/testsuite/g++.old-deja/g++.law/patches1.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/pic1.C | 9 + gcc/testsuite/g++.old-deja/g++.law/pr25000.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/profile1.C | 12 + gcc/testsuite/g++.old-deja/g++.law/refs1.C | 43 +++ gcc/testsuite/g++.old-deja/g++.law/refs2.C | 11 + gcc/testsuite/g++.old-deja/g++.law/refs3.C | 6 + gcc/testsuite/g++.old-deja/g++.law/refs4.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/scope1.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/scope2.C | 45 ++++ gcc/testsuite/g++.old-deja/g++.law/scope3.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/scope4.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/scope5.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/shadow1.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/shadow2.C | 28 ++ gcc/testsuite/g++.old-deja/g++.law/static-mem2.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/static-mem3.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/static-mem4.C | 13 + gcc/testsuite/g++.old-deja/g++.law/static-mem5.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/template1.C | 30 +++ gcc/testsuite/g++.old-deja/g++.law/template3.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/temps1.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/temps2.C | 55 ++++ gcc/testsuite/g++.old-deja/g++.law/temps3.C | 29 +++ gcc/testsuite/g++.old-deja/g++.law/temps4.C | 40 +++ gcc/testsuite/g++.old-deja/g++.law/temps5.C | 42 +++ gcc/testsuite/g++.old-deja/g++.law/temps6.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/temps7.C | 11 + gcc/testsuite/g++.old-deja/g++.law/typeck1.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/typeck2.C | 16 ++ gcc/testsuite/g++.old-deja/g++.law/typeck3.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/typeck4.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/union1.C | 29 +++ gcc/testsuite/g++.old-deja/g++.law/union2.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/union3.C | 13 + gcc/testsuite/g++.old-deja/g++.law/union4.C | 13 + gcc/testsuite/g++.old-deja/g++.law/unsorted1.C | 31 +++ gcc/testsuite/g++.old-deja/g++.law/unsorted2.C | 26 ++ gcc/testsuite/g++.old-deja/g++.law/vbase1.C | 29 +++ gcc/testsuite/g++.old-deja/g++.law/virtual1.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/virtual2.C | 32 +++ gcc/testsuite/g++.old-deja/g++.law/virtual3.C | 49 ++++ gcc/testsuite/g++.old-deja/g++.law/virtual4.C | 32 +++ gcc/testsuite/g++.old-deja/g++.law/visibility1.C | 68 +++++ gcc/testsuite/g++.old-deja/g++.law/visibility10.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/visibility11.C | 52 ++++ gcc/testsuite/g++.old-deja/g++.law/visibility12.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/visibility13.C | 110 ++++++++ gcc/testsuite/g++.old-deja/g++.law/visibility14.C | 21 ++ gcc/testsuite/g++.old-deja/g++.law/visibility15.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/visibility16.C | 35 +++ gcc/testsuite/g++.old-deja/g++.law/visibility17.C | 66 +++++ gcc/testsuite/g++.old-deja/g++.law/visibility18.C | 20 ++ gcc/testsuite/g++.old-deja/g++.law/visibility19.C | 40 +++ gcc/testsuite/g++.old-deja/g++.law/visibility2.C | 68 +++++ gcc/testsuite/g++.old-deja/g++.law/visibility20.C | 36 +++ gcc/testsuite/g++.old-deja/g++.law/visibility21.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/visibility22.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/visibility24.C | 40 +++ gcc/testsuite/g++.old-deja/g++.law/visibility25.C | 26 ++ gcc/testsuite/g++.old-deja/g++.law/visibility26.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/visibility27.C | 19 ++ gcc/testsuite/g++.old-deja/g++.law/visibility28.C | 24 ++ gcc/testsuite/g++.old-deja/g++.law/visibility3.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/visibility4.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/visibility5.C | 17 ++ gcc/testsuite/g++.old-deja/g++.law/visibility6.C | 23 ++ gcc/testsuite/g++.old-deja/g++.law/visibility7.C | 73 ++++++ gcc/testsuite/g++.old-deja/g++.law/visibility8.C | 26 ++ gcc/testsuite/g++.old-deja/g++.law/visibility9.C | 22 ++ gcc/testsuite/g++.old-deja/g++.law/vtable1.C | 27 ++ gcc/testsuite/g++.old-deja/g++.law/vtable2.C | 18 ++ gcc/testsuite/g++.old-deja/g++.law/vtable3.C | 25 ++ gcc/testsuite/g++.old-deja/g++.law/weak.C | 20 ++ 259 files changed, 7155 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.law/access1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/access2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/access3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/access4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/access5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arg9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/arm9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/array1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/array2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bad-error1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bad-error3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bad-error4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bad-error6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/builtin1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/casts1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/casts2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/casts3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/code-gen1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/code-gen2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/code-gen4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/copy1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/copy2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/ctors9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/cvt9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/dossier1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/dtors1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/dtors2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/dtors3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/dtors4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/dtors5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/enum1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/enum2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/enum3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/enum4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/enum6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/enum7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/enum9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/except1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/except2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/except3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/except4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/except5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/except6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/friend1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/friend4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/friend5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/global-init1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/incdec1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/init9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/inline4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/inline6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/inline7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/mentor1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/missed-error1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/missed-error3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/missing1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/nest1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/nest2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/nest3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/nest4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/nest5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators23.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators29.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators30.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators31.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators32.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators33.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators34.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/operators9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/parsing9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/patches1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/pic1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/pr25000.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/profile1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/refs1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/refs2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/refs3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/refs4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/scope1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/scope2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/scope3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/scope4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/scope5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/shadow1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/shadow2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/static-mem2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/static-mem3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/static-mem4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/static-mem5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/template1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/template3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/temps1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/temps2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/temps3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/temps4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/temps5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/temps6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/temps7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/typeck1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/typeck2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/typeck3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/typeck4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/union1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/union2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/union3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/union4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/unsorted1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/unsorted2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/vbase1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/virtual1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/virtual2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/virtual3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/virtual4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility20.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility21.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility22.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility24.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility25.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility26.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility27.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility28.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/visibility9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/vtable1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/vtable2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/vtable3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.law/weak.C (limited to 'gcc/testsuite/g++.old-deja/g++.law') diff --git a/gcc/testsuite/g++.old-deja/g++.law/access1.C b/gcc/testsuite/g++.old-deja/g++.law/access1.C new file mode 100644 index 000000000..a38793cd1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/access1.C @@ -0,0 +1,34 @@ +// { dg-do assemble } +// GROUPS passed access +// access file +// Message-Id: <9211281852.AA24557@cove.cis.ufl.edu> +// From: Robert Forsman +// Subject: method access bug in gcc-2.3.1 on a sparc-sun-sunos4.1.2 +// Date: Sat, 28 Nov 92 13:52:14 EST + +extern "C" { + int atoi(const char*); +} + +struct thingus; + +class foo { +public: + static const foo alpha; + static const foo beta; + +private: + int i; + foo(thingus * s); +public: + foo() {i=0;} +}; + +struct thingus { + int i; +}; + +static thingus blah, blah2; + +const foo foo::alpha(&blah); +const foo foo::beta(&blah2); diff --git a/gcc/testsuite/g++.old-deja/g++.law/access2.C b/gcc/testsuite/g++.old-deja/g++.law/access2.C new file mode 100644 index 000000000..2177748b7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/access2.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed access +// access file +// Message-Id: <9306301534.AA05072@sparc1.cnm.us.es> +// From: juando@cnm.us.es (Juan D. Martin) +// Subject: Compiler lets access to private constructor in template. +// Date: Wed, 30 Jun 93 17:34:10 +0200 + +template class Foo +{ +private: + friend class Bar; // To avoid warning. + Foo(const T &v) {}; // { dg-error "" } private +}; + + +int main() +{ + Foo(1);// { dg-error "" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/access3.C b/gcc/testsuite/g++.old-deja/g++.law/access3.C new file mode 100644 index 000000000..3a6acb922 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/access3.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed access +// unsorted.2 file +// Date: Sat, 6 Jun 1992 18:23:03 -0400 +// From: Brendan Kehoe +// Message-Id: <199206062223.AA22653@betty.cs.widener.edu> +// Subject: bug with access control to member functions + + class X { + void g (int); // { dg-error "" } is private + public: + void g (double); + }; + + class Y : public X { void f() { g (1); } };// { dg-error "" } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/access4.C b/gcc/testsuite/g++.old-deja/g++.law/access4.C new file mode 100644 index 000000000..174c441d3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/access4.C @@ -0,0 +1,27 @@ +// { dg-do assemble } +// GROUPS passed access +// (Message bugs/access:3) +// From: jamshid@ses.com (Jamshid Afshar) +// Date: Wed, 2 Mar 94 18:24:22 CST +// Subject: g++ 2.5.5 doesn't warn about inaccessible virtual base ctor +// Message-ID: <9403030024.AA04534@ses.com> + +class ForceLeafSterile { // { dg-error "" } + friend class Sterile; + ForceLeafSterile() {} // { dg-error "" } +}; + +class Sterile : private virtual ForceLeafSterile { +public: + Sterile() {} + Sterile(const char* /*blah*/) {} +}; + +class Illegitimate : public Sterile { +public: + Illegitimate() {} // { dg-error "" } can't access virtual base deflt ctor + Illegitimate(const char* /*blah*/) + : ForceLeafSterile() {} // { dg-error "" } can't access default ctor + Illegitimate(const Illegitimate&) + {} // { dg-error "" } can't access default ctor +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/access5.C b/gcc/testsuite/g++.old-deja/g++.law/access5.C new file mode 100644 index 000000000..80f848c1d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/access5.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed access +// access file +// From: Jeffrey C. Gealow +// Date: Thu, 18 Feb 93 10:22:23 -0500 +// Subject: nested class access control bug +// Message-ID: <9302181522.AA29209@mtl.mit.edu> + + +class enclose { +public: + class nested_public { int x; }; +protected: + class nested_protected { int x; }; +private: + class nested_private { int x; }; // { dg-error "" } private +}; + +class derived : public enclose { + nested_public obj1; // ok + nested_protected obj2; // ok + nested_private obj3; // error// { dg-error "" } in this context +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C new file mode 100644 index 000000000..3fc42bccc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C @@ -0,0 +1,32 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +// arg-matching file +// Subject: argument matching depending on the def order +// From: kondo@akane.mech.ibaraki.ac.jp +// Date: Fri, 04 Sep 92 17:41:05 JST + +#include +// check the order of declarations +class A { +public: + void f(double* p) { std::cout << "A(double*)\n"; } // { dg-message "note" } + void f(int* p) { std::cout << "A(int*)\n"; } // { dg-message "note" } +}; + +class B { +public: + void f(int* p) { std::cout << "B(int*)\n"; } // { dg-message "note" } + void f(double* p) { std::cout << "B(double*)\n"; } // { dg-message "note" } +}; + +int main() +{ + A a; + B b; + + a.f(0);// { dg-error "ambiguous" } + // { dg-message "candidate" "candidate note" { target *-*-* } 27 } + b.f(0);// { dg-error "ambiguous" } + // { dg-message "candidate" "candidate note" { target *-*-* } 29 } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg10.C b/gcc/testsuite/g++.old-deja/g++.law/arg10.C new file mode 100644 index 000000000..f8360be2c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg10.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +// arg-matching file +// From: Terry Lee +// Date: Sat, 14 May 1994 02:46:15 -0500 +// Subject: g++ 2.5.8 template bug +// Message-ID: <199405140746.AA03993@uivlsisd.csl.uiuc.edu> + +template +class A { +public: + void func(const T& val) { } +}; + +int main() +{ + A a; + int* ptr = 0; + a.func(ptr); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg11.C b/gcc/testsuite/g++.old-deja/g++.law/arg11.C new file mode 100644 index 000000000..fc9357964 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg11.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +// From: gustavo@cpqd.br (Gustavo Chaves) +// Date: Wed, 25 May 94 09:38:00 EST +// Subject: problem with user defined conversions in initialization +// Message-ID: <9405251238.AA19815@moon.cpqd.br> + +struct String { String(const char*); }; + +struct Ack { Ack(String); }; + +struct S { void method(Ack); }; // { dg-message "S::method|no known conversion" } referenced below + +void function(Ack); + +int +foo(S *o) +{ // Neither call has a usable constructor for conversions of char[5] to Ack. + function("adsf");// { dg-error "could not convert" } + o->method("adsf");// { dg-error "no matching" } + // { dg-message "candidate" "candidate note" { target *-*-* } 20 } + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg2.C b/gcc/testsuite/g++.old-deja/g++.law/arg2.C new file mode 100644 index 000000000..8c4e443d3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg2.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +// arg-matching file +// Message-Id: <199303032114.AA03574@kolvir.Boulder.ParcPlace.COM> +// From: Warner Losh +// Subject: Overloading bug in g++ 2.3.3 (sparc) compiled by GNU C version 2.3.3 +// Date: Wed, 03 Mar 1993 14:14:02 MST + +class c1 { }; + +typedef void (*fnp)(void *); +typedef void (c1::*memfnp)(void *); +extern void fn1( fnp ); +extern void fn1( c1*, memfnp ); + +void f3(void *) { } + +void fn2() +{ + fn1((fnp) &f3); // Everybody likes this + fn1(&f3); // g++ complains here line 13 +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg3.C b/gcc/testsuite/g++.old-deja/g++.law/arg3.C new file mode 100644 index 000000000..bbaf47012 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg3.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +typedef void* Ptr; + + +void func(int, const Ptr& p); + +template void func(T, const Ptr& p); + + +Ptr& return_ref(); + + +int main() +{ + char* x; + + func(x,return_ref()); // bug: + // call of func(int, const Ptr&) + // instead of func(char*,const Ptr&) + +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg4.C b/gcc/testsuite/g++.old-deja/g++.law/arg4.C new file mode 100644 index 000000000..1cd9fd27c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg4.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +// arg-matching file +// Message-Id: <14t4tyk@rpi.edu> +// From: jorgej@colossus.cs.rpi.edu (Joaquim Jorge) +// Subject: g++ 2.3.3 Doesn't check function types in initializer lists ? +// Date: Tue, 9 Mar 1993 21:39:08 GMT + +typedef void (*FuncPtr)(int a, float b); +class Amazing { int a; int b; int c; }; + +extern void *Wrong1(char *a, int *b); +extern void *Wrong2(Amazing a, int *b); +extern void *Wrong3(char *a, Amazing *b); +extern void Wrong4(char *a, int *b); +extern Amazing Wrong5(char *a, int *b); + +FuncPtr p = &Wrong5;// { dg-error "" } .* +FuncPtr func_ptr_array[] = { &Wrong1, &Wrong2, &Wrong3, &Wrong4, &Wrong5, 0 };// { dg-error "" } .* + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg5.C b/gcc/testsuite/g++.old-deja/g++.law/arg5.C new file mode 100644 index 000000000..665c5cd4f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg5.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +extern double pow(double,int*); + +extern "C" { + extern int printf (const char *, ...); + extern double pow(double, double); +} + +int main() +{ + if (pow (2.0, 3.0) != 8.0) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg6.C b/gcc/testsuite/g++.old-deja/g++.law/arg6.C new file mode 100644 index 000000000..c47c4467c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg6.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +// arg-matching file +// Message-Id: <9305032310.AA03900@malachite.bbn.com> +// From: Dan Franklin +// Subject: overloaded function bug +// Date: Mon, 3 May 93 19:10:10 EDT + + + typedef int (*fnp)(int, void*); + void dispatch_insert(int, int, fnp, void* = 0); + void dispatch_insert(int, int, long*, char*); + typedef void (*InsertFunP)(int, int, fnp, void*); + extern void f(InsertFunP); + void g() { f(dispatch_insert); } diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg7.C b/gcc/testsuite/g++.old-deja/g++.law/arg7.C new file mode 100644 index 000000000..a3ccab92b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg7.C @@ -0,0 +1,33 @@ +// { dg-do run } +// GROUPS passed arg-matching +// arg-matching file +// Message-Id: <9305041759.AA04913@malachite.bbn.com> +// From: Dan Franklin +// Subject: overloaded function resolved incorrectly +// Date: Tue, 4 May 93 13:59:18 EDT + +#include + +// Given the following overloaded function definitions + +int ovf(unsigned long, short, short) { printf ("PASS\n"); return 0; } +int ovf( int, short, unsigned long) { printf ("FAIL\n"); return 1; } + +// and the call +// +// ovf(unsigned long, unsigned int, unsigned int) +// +// it seems to me (and to cfront) that this should resolve to ovf #1 above, +// but g++ resolves it to ovf #2. Resolving to ovf #1 requires two conversions +// (unsigned int => short) while resolving to ovf #2 takes two conversions +// (unsigned long => int, unsigned int => short) and a promotion +// (unsigned int => unsigned long). + +int main(int, char**) +{ + unsigned long pixmap = 0; + unsigned int x = 0; + unsigned int y = 0; + + return ovf(pixmap, x, y); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C new file mode 100644 index 000000000..1aba05fb2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C @@ -0,0 +1,28 @@ +// { dg-do run } +// GROUPS passed arg-matching +// arg-matching file +// Message-Id: <9307081747.AA14030@tnt> +// From: mclaugh@tnt.acsys.com (Mark A. McLaughlin) +// Subject: g++ bug +// Date: Thu, 8 Jul 93 11:47:28 MDT + + +#include +#include + +// With this declaration the program will not link. +template std::ostream & save(std::ostream & os, Type T); + + template std::ostream & +save(std::ostream & os, Type T) { + return os << T; +} // save + + int +main() { + int i = 10; + save((std::ostream &)std::cout, i) << std::endl; + short int s = 5; + save((std::ostream &)std::cout, s) << std::endl; + std::printf ("PASS\n"); +} // main diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg9.C b/gcc/testsuite/g++.old-deja/g++.law/arg9.C new file mode 100644 index 000000000..ee352fabf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arg9.C @@ -0,0 +1,39 @@ +// { dg-do assemble } +// GROUPS passed arg-matching +// arg-matching file +// Message-Id: <199405132049.QAA06835@elan.cs.UMD.EDU> +// Subject: Bug in g++ 2.4.5 and 2.5.8 +// Date: Fri, 13 May 1994 16:49:22 -0400 +// From: Evan Rosser + +#include +#include +#include + +class TupleIterator { +public: + TupleIterator(int *tpl); + int& operator*(); + int live() const; +// The compile fails with "no post-increment operator for type" at "TI++" +// below. +// It succeeds with the same declarations if set_position does not take an int. +// This occurs with G++ 2.4.5 and 2.5.8. +// Sun CC works OK with either case. + void operator++(int); + void set_position(int); +private: +}; + +int main() { + +int t[5]; +t[1] = 1; t[2] = 2;t[3] = 3;t[4] = 4; +TupleIterator TI(t); + + while(TI.live()){ + printf("%d", *TI); + TI++; + } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm1.C b/gcc/testsuite/g++.old-deja/g++.law/arm1.C new file mode 100644 index 000000000..d74110880 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm1.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <9211191128.AA14718@us-es.sel.de> +// From: dcb@us-es.sel.de +// Subject: ARM p79 trivial bug +// Date: Thu, 19 Nov 92 12:28:24 +0100 + +extern "C" int printf( const char *, ...); + +int main() +{ + int a = 1 ; + int b = 2 ; + int c = 3 ; + + (a = b) = c ; + printf( " %d %d %d\n", a, b, c); + return 0 ; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm10.C b/gcc/testsuite/g++.old-deja/g++.law/arm10.C new file mode 100644 index 000000000..b3ca567cb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm10.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <1oab2hINN7m@gap.caltech.edu> +// From: tll@cco.caltech.edu (Tal Lewis Lancaster) +// Subject: ARM Page 65 +// Date: 18 Mar 1993 17:21:21 GMT + +int(*p)[10]=new int[20][10]; diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm11.C b/gcc/testsuite/g++.old-deja/g++.law/arm11.C new file mode 100644 index 000000000..da26cad40 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm11.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <9302181055.AA12522@slsvitt> +// From: dcb@us-es.sel.de (David Binderman 3841) +// Subject: Page 81 of the ARM +// Date: Thu, 18 Feb 93 11:55:15 +0100 + + +int main() { + int x[ 10, 11]; // { dg-error "" } .* + + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C new file mode 100644 index 000000000..c0332d367 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C @@ -0,0 +1,49 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// From: belley@cae.ca (Benoit Belley 3218) +// Subject: Bad access control with private constructor and derivation +// Date: Fri, 28 May 1993 12:39:57 -0400 (EDT) + +#include + +class X +{ +public: + void f(); + +private: + X(); +}; + +class Y : public X +{ +public: + Y(); +}; + +X::X() // { dg-error "is private" } +{ + std::cout << "X::X()" << std::endl; +} + +void X::f() +{ + std::cout << "X::f()" << std::endl; +} + +Y::Y() // { dg-error "within this context" } +{ + std::cout << "Y::Y()" << std::endl; +} + + +int main() +{ + Y y; + y.f(); +} + + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm13.C b/gcc/testsuite/g++.old-deja/g++.law/arm13.C new file mode 100644 index 000000000..f1393c6e3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm13.C @@ -0,0 +1,16 @@ +// { dg-do run } +// GROUPS passed ARM-compliance +#include +#include + +inline void *operator new(size_t, void *place) { return place; } + +int main() +{ + int* p = (int*) malloc(sizeof(int)); + (void) new (p) int(1); + typedef int I; + p->I::~I(); + free(p); + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm14.C b/gcc/testsuite/g++.old-deja/g++.law/arm14.C new file mode 100644 index 000000000..9e51f0e3c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm14.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// unsorted.2 file +// Message-Id: +// Date: Thu, 4 Jun 1992 15:07:56 GMT +// Subject: access control +// From: gjditchf@plg.waterloo.edu (Glen Ditchfield) + + +class X { + private: + enum E1 {a1, b1}; // { dg-error "" } private + public: + enum E2 {a2, b2}; + }; + +void h(X* p) { + X::E2 e2; + int x2 = X::a2; + + X::E1 e1; // { dg-error "" } within this context + int x1 = X::a1; // { dg-error "" } Should be rejected, and is. + } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm15.C b/gcc/testsuite/g++.old-deja/g++.law/arm15.C new file mode 100644 index 000000000..11a3036e0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm15.C @@ -0,0 +1,55 @@ +// { dg-do run } +// GROUPS passed ARM-compliance +// arm file +// From: Johan Bengtsson +// Date: Thu, 21 Oct 93 16:10:25 +0100 +// Subject: gcc 2.4.5 initializes base classes in mem-initializer order +// Message-ID: <9310211510.AA14943@holden.lulea.trab.se> + +#include +#include + +int state = 0; + +class A { public: + A() { + if (state == 0) + state = 1; + else { + printf ("FAIL\n"); + exit (1); + } + } +}; + +class B { public: + B() { + if (state == 1) + state = 2; + else { + printf ("FAIL\n"); + exit (1); + } + } +}; + +class AB : public A, public B { public: + AB() : B(), A() { + if (state == 2) + state = 3; + else { + printf ("FAIL\n"); + exit (1); + } + } +}; + +int main() +{ + AB ab; + if (state == 3) + printf("PASS\n"); + else + printf("FAIL\n"); + exit (state != 3); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm16.C b/gcc/testsuite/g++.old-deja/g++.law/arm16.C new file mode 100644 index 000000000..f4b546e57 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm16.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// { dg-options "-ansi -Wall -pedantic" } +// GROUPS passed ARM-compliance +// arm file +// From: Olaf.Weber@cwi.nl +// Date: Fri, 2 Dec 1994 09:14:25 +0100 +// Subject: Omitting & when obtaining a pointer to member function. +// Message-ID: <9412020814.AA00604=olaf@havik.cwi.nl> + +struct C { + void foo(); +}; + +void (C::*pfm)() = C::foo;// { dg-error "" } .* diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm2.C b/gcc/testsuite/g++.old-deja/g++.law/arm2.C new file mode 100644 index 000000000..23284b0a6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm2.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <199301260140.AA13734@world.std.com> +// From: gparker@world.std.com (Glenn P Parker) +// Subject: gcc bug +// Date: Mon, 25 Jan 1993 20:40:44 -0500 + +int f() { return 1; } + +int main() +{ + int (&fr)() = f; + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm3.C b/gcc/testsuite/g++.old-deja/g++.law/arm3.C new file mode 100644 index 000000000..c3f985a52 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm3.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <199301260139.AA13555@world.std.com> +// From: gparker@world.std.com (Glenn P Parker) +// Subject: gcc bug +// Date: Mon, 25 Jan 1993 20:39:19 -0500 + +class X { + enum S { blue, pink }; + int S; +public: + void f (enum S arg) ; +}; + +void X::f (enum S arg) +{ + S = arg; // g++ gives error on this line. +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm4.C b/gcc/testsuite/g++.old-deja/g++.law/arm4.C new file mode 100644 index 000000000..bbcf7df23 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm4.C @@ -0,0 +1,29 @@ +// { dg-do run } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <199301272139.AA25489@world.std.com> +// From: kol@world.std.com (Nikolay Yatsenko) +// Subject: g++ bug +// Date: Wed, 27 Jan 1993 16:39:10 -0500 + +extern "C" int printf(const char*,...); +int count = 0; + +struct S { + int i; + S(int b) { + i = b; + count++; } +}; + +int main(void) +{ + double a = 2.0; + + S x(int (a)); + if (count > 0) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm5.C b/gcc/testsuite/g++.old-deja/g++.law/arm5.C new file mode 100644 index 000000000..8f038d065 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm5.C @@ -0,0 +1,25 @@ +// { dg-do run } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <9212072127.AA24243@us-es.sel.de> +// From: dcb@us-es.sel.de +// Subject: page 78 of the ARM +// Date: Mon, 7 Dec 92 22:27:09 +0100 + +extern "C" int printf( const char *, ...); + +int & max( int & a, int & b) { + return (a < b) ? b : a; +} + +int main( void) { + int a = 1; + int b = 2; + int & c = max( a, b); + + if (&c == &b) + printf( "PASS\n"); + else + { printf( "FAIL\n"); return 1; } + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm6.C b/gcc/testsuite/g++.old-deja/g++.law/arm6.C new file mode 100644 index 000000000..a057b1898 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm6.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <9211231051.AA11287@us-es.sel.de> +// From: dcb@us-es.sel.de +// Subject: ARM page 87 +// Date: Mon, 23 Nov 92 11:51:38 +0100 + + +int main() { + int a; + + switch (a) { + case 1: + int v2 = 3;// { dg-error "" } crosses.* + case 2:// { dg-error "" } jump.* + if (v2 == 7) // error not flagged by 2.3.1 + ; + } + + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm7.C b/gcc/testsuite/g++.old-deja/g++.law/arm7.C new file mode 100644 index 000000000..bd1607768 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm7.C @@ -0,0 +1,41 @@ +// { dg-do run } +// { dg-options "-w" } +// GROUPS passed ARM-compliance +// arm file (also in cvt file) +// Message-Id: <9303061246.AA09402@gjetost.cs.wisc.edu> +// From: solomon@cs.wisc.edu (Marvin Solomon) +// Subject: Incorrect resolution of conversion path +// Date: Sat, 6 Mar 93 06:46:27 -0600 + + +extern "C" int printf (const char *, ...); + +class Base { +public: + int i; + Base(int ii) : i(ii) {} +}; + +class Derived : public Base { +public: + Derived(int ii) : Base(ii) {} + operator Base&(); +}; + +Derived::operator Base&() { + Base *b = new Base(100*i); + return *b; +} + +int f(Base &b) { + if (b.i == 99) + { printf ("PASS\n"); return 0; } + else + { printf ("FAIL\n"); return 1; } +} + +int main() { + Derived d(99); + return f(d); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm8.C b/gcc/testsuite/g++.old-deja/g++.law/arm8.C new file mode 100644 index 000000000..8b82af951 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm8.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +// arm file +// Message-Id: <9303161105.AA29336@slsvitt> +// From: dcb@us-es.sel.de (David Binderman 3841) +// Subject: Page 141 of the ARM +// Date: Tue, 16 Mar 93 12:05:24 +0100 + +struct K { + void f( int *p = 0); // { dg-error "" } previous specification +}; + +extern int * q; + +void K::f( int *p = q);// { dg-error "" } .* + diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C new file mode 100644 index 000000000..979ef8088 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C @@ -0,0 +1,39 @@ +// { dg-do assemble } +// GROUPS passed ARM-compliance +#include +enum f1 { + F1 +}; + +enum f2 { + F2 +}; + +class A { +public: + void set (f1 f); +}; +void A::set (f1 f) { std::cout << "called A f1\n";} + +class B : public A { +public: + void set (f2 f); +}; +void B::set (f2 f) { std::cout << "called B\n|no known conversion";} // { dg-message "B::set|no known conversion" } + +int main() { + B b; + b.set(F1); // ARM page 309: should call A.set(f1) and that what g++ does,// { dg-error "match" } + // { dg-message "candidate" "candidate note" { target *-*-* } 26 } + // but 13.1 of ARM clearly states that it should call B::set() + // or generate an error because overloading works only for + // functions within the same scope (first page of chapter 13) + // while member of derived and base classes are considered to + // belong to different scopes. Thus B::set() should have + // hidden (completely) the A::set() function. +} + + + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/array1.C b/gcc/testsuite/g++.old-deja/g++.law/array1.C new file mode 100644 index 000000000..304035ffc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/array1.C @@ -0,0 +1,32 @@ +// { dg-do run } +// GROUPS passed arrays +// array file +// Message-Id: <9204120353.AA06266@cs.rice.edu> +// From: dougm@cs.rice.edu (Doug Moore) +// Subject: constructors not called on new'ed array elements +// Date: Sat, 11 Apr 92 22:53:35 CDT + +#include + +int i = 0; + +class foo +{ +private: + static foo *array; +public: + foo() + { + i++; + } +}; + +foo* foo::array = new foo [5]; + +int main() +{ + if (i != 5) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/array2.C b/gcc/testsuite/g++.old-deja/g++.law/array2.C new file mode 100644 index 000000000..0dcddb03c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/array2.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// GROUPS passed arrays +// array file +// Message-Id: <"nac.no.188:05.10.92.14.37.45"@nac.no> +// From: frode@auticon.no +// Subject: prototype bug ? +// Date: Thu, 5 Nov 92 15:37:34 PST + + extern unsigned char * (*trt_def(int))[][2]; + extern unsigned char * (trt_rplst(unsigned char *(*)[][2])); // { dg-error "" } diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error1.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error1.C new file mode 100644 index 000000000..40ee169ed --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error1.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed bad-errors +// bad-error file +// Message-Id: <9301081103.AA29469@jclark.com> +// From: jjc@jclark.com (James Clark) +// Subject: initializer for static class member array +// Date: Fri, 8 Jan 93 11:03:05 GMT + +struct A { + static int v[]; +}; + +int A::v[1] = { 1 }; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error3.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error3.C new file mode 100644 index 000000000..d653ec54d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error3.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed bad-errors +// bad-error file +// Date: Sun, 31 Jul 1994 11:37:43 +1000 (EST) +// From: Rohan LENARD +// Subject: g++-2.6.0 gives wrong warning for placement syntax new +// Message-Id: <0iCk1b0000000z0VY0@iassf.easams.com.au> + + +#include + +void * operator new(size_t, int *); +void * operator new(size_t, void *); + +int *x = 0; +int foo(){ +new (x) int *; +new (&x) int *; +new (x) int *; // This is identical to line 8 !!! +return 1; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error4.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error4.C new file mode 100644 index 000000000..74626f713 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error4.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed bad-errors +#include + +void * operator new(size_t, int *); +void * operator new(size_t, void *); + +int *x = 0; +int foo(){ +new (x) int *; +new (&x) int *; +new (x) int *; // This is identical to line 8 !!! +return 1; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error6.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error6.C new file mode 100644 index 000000000..40e2b99eb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error6.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// GROUPS passed bad-errors +typedef __SIZE_TYPE__ size_t; + +class tt { + public: + tt(int); + + private: + void *operator new(size_t a); // Forbid object creation in heap memory. +}; + +void st(const tt&, int); + +void ff(int i, int j) +{ + if( i > 0 ) { + // This work ok. + tt a_tt(i); + st(a_tt, j); + } + else { + // This triggers an error because of private operator new ????. + st(tt(-i), j); + } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C new file mode 100644 index 000000000..4c07d4315 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// GROUPS passed bad-errors +#include + +class ParX + { + public: + ParX() {} + }; + +class X : public ParX + { + public: + void fn2() { std::cout << "hi" << std::endl; } + }; + +int main() + { + X x; + ParX* pParX = &x; + void (ParX::*p)() = (void (ParX::*)()) &X::fn2; // line 19 + + (pParX->*p)(); + } + + + + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C b/gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C new file mode 100644 index 000000000..e101d6aa5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed bit-fields +typedef int A; + +struct B +{ + int A : 2; +} ; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C b/gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C new file mode 100644 index 000000000..270fc8aab --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C @@ -0,0 +1,43 @@ +// { dg-do run } +// GROUPS passed bit-fields +// bitfield file +// Message-Id: <92Oct29.191913est.62@jarvis.csri.toronto.edu> +// From: mdivax1!robinson@ai.mit.edu (Jim Robinson) +// Subject: gcc 2.2.2 C++ bug in handling :0 bit fields +// Date: Thu, 29 Oct 1992 19:18:28 -0500 +// +// Also applies to: +// bitfield file +// From: Jaimie Wilson/MSL +// Date: Fri, 28 Jan 1994 06:11:43 -0500 +// Subject: GCC bug report +// +// This test is only meant for targets where EMPTY_FIELD_BOUNDARY is +// defined to no larger than the size of an unsigned int, or where +// PCC_BITFIELD_TYPE_MATTERS is defined. Add skips below for targets that +// do not have that property. +// { dg-skip-if "" { mmix-knuth-mmixware } { "*" } { "" } } + + +#include +#include + +struct foo { + char a; + char b; + unsigned int : 0; /* force word alignment */ + char c; +}; + +int +main(int argc, char **argv) +{ + struct foo bar; + + if (offsetof (struct foo, c) > sizeof (unsigned int)) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C b/gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C new file mode 100644 index 000000000..36d040629 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C @@ -0,0 +1,7 @@ +// { dg-do assemble } +// GROUPS passed bit-fields + class t { + short :(sizeof(short)-2); + public: + t(); + }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/builtin1.C b/gcc/testsuite/g++.old-deja/g++.law/builtin1.C new file mode 100644 index 000000000..67b71a836 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/builtin1.C @@ -0,0 +1,17 @@ +// { dg-do run } +// { dg-options "" } +// GROUPS passed builtins +// Apparently not in g++ bug snapshot (was originally sent to bug-gcc) +// Message-Id: +// Date: Tue, 7 Dec 93 10:23 EST +// From: neal@ctd.comsat.com (Neal Becker) +// Subject: builtin_alloca on hpux (gcc-2.5.6) +// We have to avoid using -ansi, which results in a call to alloca instead of +// the use of __builtin_alloca, and thus ends up being unresolved. + +extern "C" int printf (const char *, ...); + +void* junk() { + return __builtin_alloca(10); +} +main() { printf ("PASS\n");} diff --git a/gcc/testsuite/g++.old-deja/g++.law/casts1.C b/gcc/testsuite/g++.old-deja/g++.law/casts1.C new file mode 100644 index 000000000..8ffc0c26d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/casts1.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed casts +// casts file +// From: dcb@us-es.sel.de (David Binderman 3841) +// Date: Thu, 18 Feb 93 14:42:48 +0100 +// Subject: Page 67 of the ARM +// Message-ID: <9302181342.AA14050@slsvitt> + +int main() { + (struct T { int b; } *) 0; // { dg-error "" } + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/casts2.C b/gcc/testsuite/g++.old-deja/g++.law/casts2.C new file mode 100644 index 000000000..cba10f280 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/casts2.C @@ -0,0 +1,39 @@ +// { dg-do assemble } +// GROUPS passed casts +class VObject; + +typedef int boolean; + +typedef boolean (VObject::*method)(); +typedef boolean (VObject::*method0)(); +typedef boolean (VObject::*method1)(long); + +#define methodOf(o,m) (method)(&o::m) + + +class VObject { + public: + boolean perform(method ); + boolean perform(method , long); + void affectMethod(method ); + void dummy(){} +}; + + +boolean VObject::perform(method m) +{ + method0 q = (method0)m; + return(this->*q)(); +} + + +boolean VObject::perform(method m, long param) +{ + method1 q = (method1)m; + return(this->*q)(param); + } + +void VObject::affectMethod(method m) +{ + m = methodOf(VObject, dummy); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/casts3.C b/gcc/testsuite/g++.old-deja/g++.law/casts3.C new file mode 100644 index 000000000..d8ee7daa8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/casts3.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// { dg-options "-pedantic-errors" } +// GROUPS passed casts +// casts file +// From: fjh@cs.mu.oz.au +// Message-Id: <9310121939.29641@munta.cs.mu.OZ.AU> +// Subject: should emit diagnostic for `int *p = (void *)0;' +// Date: Wed, 13 Oct 93 5:39:35 EST + int *p = (void *)0;// { dg-error "" } .* diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen1.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen1.C new file mode 100644 index 000000000..2c699b451 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen1.C @@ -0,0 +1,21 @@ +// { dg-do run } +// GROUPS passed code-generation +// code-gen file +// From: Jeffrey C. Gealow +// Date: Sun, 4 Jul 93 18:57:53 -0400 +// Subject: increment bug (0 + 1 + 1 = 3) +// Message-ID: <9307042257.AA23538@mtl.mit.edu> + +#include + +int main() +{ + int i = 0; + (++i)++; + if (i == 2) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen2.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen2.C new file mode 100644 index 000000000..e250cee79 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen2.C @@ -0,0 +1,35 @@ +// { dg-do run } +// GROUPS passed code-generation +// code-gen file +// From: Gunther Seitz +// Date: Thu, 18 Mar 1993 10:45:29 +0100 +// Message-ID: <93Mar18.104538met.1094@regatta.regent.e-technik.tu-muenchen.de> + + +#include + +class X { + +public: + double x; + X () { x=3.5; } // Here we go. This assignment fails because + // of X::x being aligned on a doubleword + // boundary, not a quadword one. + }; + + +class A : public virtual X {}; // Only way to produce the +class B : public virtual X {}; // error is to use this +class C : public virtual X {}; // construct of virtual + // base classes. + +class Y : public A, public B, public C {}; + + +int main () +{ + Y y; // To call the constructor + printf ("PASS\n"); + } + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen4.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen4.C new file mode 100644 index 000000000..362ecc18e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen4.C @@ -0,0 +1,31 @@ +// { dg-do run } +// GROUPS passed code-generation +// code-gen file +// From: david.binderman@pmsr.philips.co.uk +// Date: Tue, 17 Aug 93 10:09:38 BST +// Subject: .* broken in 2.4.5 +// Message-ID: <9308170909.AA05509@pmsr.philips.co.uk> + +class A { +public: + char c; +}; + +typedef char A::*PMA; + +PMA pmA = &A::c; + +A oA; + +extern "C" int printf( const char *, ...); + +int main() +{ + oA.c = 'q'; + + if ( (oA .* pmA)) + printf( "PASS\n"); + else + printf(" FAIL\n"); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C new file mode 100644 index 000000000..0a992d0b9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C @@ -0,0 +1,287 @@ +// { dg-do run } +// GROUPS passed code-generation +// code-gen file +// From: "David" +// Date: Mon, 15 Nov 1993 20:59:14 -0600 (CST) +// Subject: An error! +// Message-ID: <9311160259.AA03353@pi14.arc.umn.edu> + +#include +#include +#include +#include +#include +#include + +#define ANSI_C + +typedef double VEC ; + +class Vector; + +class VectorInt +{ + public: + + /* Nothing public!! Only Vector can use this class */ + + private: + + VectorInt( int ); + VectorInt( int, double *, int = 0 ); + VectorInt( const VectorInt & ); + ~VectorInt(); + + VectorInt *refer(); + void unrefer(); + int count; /* Number of Vector's referring to me */ + + VEC *vec; + + friend class Vector; + friend class VecElem; +}; + +class VecElem +{ + public: + + operator double(); + double operator=( double ); + + private: + + VecElem( Vector &, int ); + VecElem( const VecElem & ); + + Vector &v; + int row; /* Row element refers to */ + + friend class Vector; +}; + +class Vector +{ + public: + + Vector(); // Must be assigned to before used + Vector( VectorInt * ); + Vector( int ); + Vector( int, double *, int beg = 0 ); + Vector( const Vector & ); + Vector &operator=( const Vector & ); + ~Vector() { if(r) r->unrefer(); } + + int row() const { return 19; } + int dim() const { return 10; } + + double operator()( int ) const; + VecElem operator()( int ); + + double assign( int, double ); + + friend std::ostream& operator<<(std::ostream&, const Vector& m ); + + private: + + VectorInt *r; /* Reference to real data */ + + friend class VecElem; + friend class LUDecom; + friend class SVD; +}; + + +Vector:: +Vector() + : r(0) +{} + +Vector:: +Vector( VectorInt *vi ) + : r(vi) +{ + r->refer(); +} + +Vector:: +Vector( int row ) +{ + assert( row > 0 ); + + r = new VectorInt( row ); + + r->refer(); +} + +Vector:: +Vector( int row, double *d, int beg ) +{ + assert( row > 0 ); + + r = new VectorInt( row, d, beg ); + + r->refer(); +} + +Vector:: +Vector( const Vector &A ) + : r( A.r->refer() ) +{} + +Vector& Vector:: +operator=( const Vector &A ) +{ + if( r ) + r->unrefer(); + + r = A.r->refer(); + + return *this; +} + +double Vector:: +operator()( int row ) const +{ + assert(r != 0); + + return *r->vec; +} + +VecElem Vector:: +operator()( int r ) +{ + assert(r != 0); + + return VecElem( *this, r ); +} + + /* assign changes the matrix, it does not create a new one! */ +double Vector:: +assign( int rownum, double d ) +{ + assert(r != 0); + + if( rownum > row() || rownum <= 0 ) { + std::cerr << "Warning: trying to assign out of bounds" << std::endl; + std::cerr << "row " << rownum << std::endl; + std::cerr << "Vector size " << row() << std::endl; + std::abort(); + } + + if( r->count == 1 ) { + /* Don't need to create a new matrix, since we are the only */ + /* one pointing to ours */ + } + else { + VectorInt *vi = new VectorInt( *r ); + r->unrefer(); + r = vi->refer(); + } + + return d; +} + + +VectorInt:: +VectorInt( int sx ) + : vec( new double[sx] ), count(0) +{ } + +VectorInt:: +VectorInt( int sx, double *, int ) + : vec( new double[sx] ), count(0) +{ +} + +VectorInt:: +VectorInt( const VectorInt & ) + : vec( new double[10] ), count(0) +{ +} + +VectorInt * VectorInt:: +refer() +{ + count ++; + return this; + + // cout << "Refering vec" << endl; +} + +void VectorInt:: +unrefer() +{ + count--; + + if( count == 0 ) { + delete this; + } + + // cout << "Unrefering vec" << endl; +} + +VectorInt:: +~VectorInt() +{ + delete vec; + vec = 0; +} + +VecElem:: +VecElem( Vector &vec, int r ) + : v(vec), row(r) +{ + if( r < 1 || r > vec.row() ) { + std::cerr << "Trying to access vector element out of bounds"; + std::cerr << std::endl; + std::abort(); + } +} + +VecElem:: +VecElem( const VecElem &elem ) + : v(elem.v), row(elem.row) +{} + +VecElem:: +operator double() +{ + assert( v.r->vec != 0 ); + return *v.r->vec; +} + +double VecElem:: +operator=( double d ) +{ + return v.assign( row, d ); +} + + + + + +int makeforms( Vector cen, Vector **a, Vector **b ); + +int main() +{ + Vector *a[8], *b[8], disp(3); + Vector cen(3), cen2(3); + int i, j; + + if (makeforms (cen,a,b) != 10) + { std::printf ("FAIL\n"); return 1; } + else + std::printf ("PASS\n"); + + +} + +int +makeforms( Vector cen, Vector **a, Vector **b) +{ + return 10; +} + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/copy1.C b/gcc/testsuite/g++.old-deja/g++.law/copy1.C new file mode 100644 index 000000000..46e53c785 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/copy1.C @@ -0,0 +1,67 @@ +// { dg-do run } +// GROUPS passed copy-ctors +#include + +int pass = 0; +class name { + int namestuff; +public: + name() { + namestuff = 111; + } + name(const name& subject); + + name & operator = (const name& right) { + this->namestuff = right.namestuff; + return *this; + } + + ~name() { + ; + } +}; + +name::name(const name& subject) { + pass = 1; +} + +class person { + int personstuff; + name personname; +public: + person() { + ; + personstuff = 222; + } + ~person() { + ; + } + void print() { + ; + } + +}; + +void +test(person argp) +{ + person testp; + + ; + argp.print(); + testp = argp; + argp.print(); + testp.print(); + ; +} + +int main() +{ + person mainp; + test(mainp); + if (pass) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/copy2.C b/gcc/testsuite/g++.old-deja/g++.law/copy2.C new file mode 100644 index 000000000..40ed576af --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/copy2.C @@ -0,0 +1,35 @@ +// { dg-do assemble } +// GROUPS passed copy-ctors +// copy file +// From: Vivek Khera +// Date: Mon, 15 Nov 1993 16:02:18 -0500 +// Subject: g++ 2.5.3 fails to automatically generate default initializer +// Message-ID: <9311152102.AA21248@thneed.cs.duke.edu> + +class String +{ + private: + char a[100]; + int len; + public: + String(); +}; + +String::String() +{ + len = 0; +} + + +struct List +{ + String item[100]; + int num_items; +// List(); // uncomment this line to let compile work +}; + +int +main(int argc, char **argv) +{ + List a; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors1.C b/gcc/testsuite/g++.old-deja/g++.law/ctors1.C new file mode 100644 index 000000000..85a4be6d0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors1.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// From: rac@qedinc.com (Robert Clark) +// Date: Tue, 14 Dec 93 10:45:50 PST +// Subject: bug in g++ 2.5.7 Array of objects +// Message-ID: <9312141845.AA09188@annapurna.qedinc.com> + + +class POOL { +public: + POOL(); +}; + +struct VAL_LIST { + POOL pool[2]; +}; + +VAL_LIST baz; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C new file mode 100644 index 000000000..cbf36cff5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// Message-Id: <9302052351.AA10789@harvey> +// From: greg@qualcomm.com (Greg Noel) +// Subject: bug019.cc +// Date: Fri, 5 Feb 93 15:51:42 -0800 + +#include + +class Klasse +{ + class Err : public std::ostream + { + public: + Err(void) : std::ostream(NULL) { } + ~Err(void) { } + }; +public: + //template Err& operator << (const T x) { return Err() << x; } + Err& operator << (const char *x) { return Err() << x; }// { dg-error "" } .* +private: + char x; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors11.C b/gcc/testsuite/g++.old-deja/g++.law/ctors11.C new file mode 100644 index 000000000..c8b59b679 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors11.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// Message-Id: <9302081631.AA14744@tera.com> +// From: rrh@tera.com (Robert R. Henry) +// Date: Mon, 8 Feb 93 08:31:39 PST +extern "C" int printf (const char *, ...); +class A{ +public: + inline A(int x){printf("constructing A with %d\n", x);} +}; + +class B:public A{ // { dg-message "note" } non-default constructor +private: +public: +}; + +int main() +{ + B(10);// { dg-error "match" } B doesn't have a constructor taking int + // { dg-message "candidate" "candidate note" { target *-*-* } 20 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C new file mode 100644 index 000000000..adc5128ea --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C @@ -0,0 +1,34 @@ +// { dg-do run } +// GROUPS passed constructors +#include +#include +#include + +#define MAGIC 7654 + +class complex { + double re; + double im; + int magic; + static int count; +public: + complex() { re=im=0; magic=MAGIC; } + complex(double d) { re=d; im=0; magic=MAGIC; } + complex(double d, double d2) {re=d; im=d2; magic=MAGIC; } + ~complex() {if(magic!=MAGIC) {std::printf("FAIL\n"); std::exit(1);}} + friend std::ostream& operator << (std::ostream& o, const complex& c) + { return o << "(" << c.re << "," << c.im << ")"; } +}; + +int complex::count=0; + +int main() +{ + complex v[6] = {1, complex(1,2), complex(), 2 }; // ARM Sect. 12.6.1 + int i; // page 289 + + for(i=0; i<6; i++) ; + std::printf ("PASS\n"); + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C new file mode 100644 index 000000000..e092222c2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed constructors +#include + +class A { + A() {} // private constructor// { dg-error "" } .* +}; + +int main() { + A* a = new A();// { dg-error "" } .* + if (a) { + std::cout << "a != NULL\n"; + } else { + std::cout << "a == NULL\n"; + } +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors14.C b/gcc/testsuite/g++.old-deja/g++.law/ctors14.C new file mode 100644 index 000000000..544506fc3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors14.C @@ -0,0 +1,43 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// Message-Id: <199301310203.AA22417@oak.ucsc.edu> +// From: "Dean R. E. Long" +// Subject: problems with default constructors +// Date: Sat, 30 Jan 1993 18:03:32 -0800 + +class A0 { +}; + +class A1 { +public: + A1(void) {} +}; + +class A2 { + A1 a; +}; + +class B0 : public A0 { +public: + B0(void) {} + B0(int) {} + B0(char) : A0() {} + B0(short) : A0() {} +}; + +class B1 : public A1 { +public: +}; + +class B2 : public A2 { +public: + B2(void) : A2() {} + B2(int) : A2() {} +}; + +class C : public B1 { +public: + C(void) : B1() {} + C(int) : B1() {} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors15.C b/gcc/testsuite/g++.old-deja/g++.law/ctors15.C new file mode 100644 index 000000000..8e89b30db --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors15.C @@ -0,0 +1,27 @@ +// { dg-do run } +// GROUPS passed constructors +// ctor file +// Message-Id: <9303270404.28207@munta.cs.mu.OZ.AU> +// From: fjh@cs.mu.oz.au +// Subject: bug with new/delete of multidimensional array +// Date: Sat, 27 Mar 93 14:04:52 EST + +#include +#include + +int construct = 0; + +class Element { +public: + Element() { construct++; if (construct > 6) {printf ("FAIL\n"); exit(1);}} + ~Element() { } +}; + +typedef Element array[2]; + +int main() { + array *x; + x = new array[3]; + delete x; + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors16.C b/gcc/testsuite/g++.old-deja/g++.law/ctors16.C new file mode 100644 index 000000000..edb3ebec2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors16.C @@ -0,0 +1,50 @@ +// { dg-do run } +// GROUPS passed constructors +// ctor file +// Message-Id: <9306021533.AA14347@icepick.jts.com> +// From: roland@jts.com (Roland Knight ) +// Subject: gcc 2.4.1 bug +// Date: Wed, 2 Jun 1993 11:33:34 -0400 + +#include +#include +#include + +char stuff[50]; +char *p = stuff; + +class A { +public: + A() { *p++ = 'A';} +}; + +class B { +public: + B() { *p++ = 'B'; } +}; + +class C : public A, public B { +public: + C() : B(), A() { *p++ = 'C'; } +}; + +class D : public A, public B { +public: + D() : B() { *p++ = 'D'; } +}; + +class E : public A, public B { +public: + E() { *p++ = 'E'; } +}; + + +int main() { + C c; + D d; + E e; + if (strncmp ("ABCABDABE", stuff, 9)) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C new file mode 100644 index 000000000..071a36008 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// Message-Id: <199306151813.gD28471@mail.Germany.EU.net> +// From: stephan@ifconnection.de (Stephan Muehlstrasser) +// Subject: gcc 2.4.3.1: illegal constructor call not rejected +// Date: Tue, 15 Jun 1993 18:34:14 +0200 (MET DST) + +// C++0x mode doesn't print the deleted copy constructor as a candidate. +// { dg-prune-output ":14:" } + +#include + +class X : public std::ifstream { + public: + X(int a, const char *b) {} // { dg-message "note" } candidate +}; +int main() +{ + X *y = new X(10, "123"); + // the compiler must reject this constructor call: + X *x = new X("abc");// { dg-error "match" } + // { dg-message "candidate" "candidate note" { target *-*-* } 22 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors18.C b/gcc/testsuite/g++.old-deja/g++.law/ctors18.C new file mode 100644 index 000000000..f687e2926 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors18.C @@ -0,0 +1,27 @@ +// { dg-do assemble } +// GROUPS passed constructors +class test1 { +}; + +template +class GC_PTR { +public: + GC_PTR(T &a) {} +}; + + +void +gotPtrs(GC_PTR r1) +{ +} + +static void +short_alloc(int n) +{ + test1 here; + GC_PTR foo = here; // This works fine. + + gotPtrs(here); // Compile error from this + // No constructor named `GC_PTR` in visible scope + // conversion between incompatible aggregate types requested +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors19.C b/gcc/testsuite/g++.old-deja/g++.law/ctors19.C new file mode 100644 index 000000000..9890a59da --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors19.C @@ -0,0 +1,33 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// From: mkohtala@vinkku.hut.fi +// Date: Tue, 5 Oct 1993 19:31:16 +0200 +// Message-Id: <199310051731.AA12260@lk-hp-11.hut.fi> +// Subject: Nested class constructor calling bug + +class X +{ + public: + class Y + { + public: + Y(int i) : a(i) {} + int a; + }; + static void f(Y y); +}; + +void X::f(X::Y y) +{ +} + +int +main() +{ + X::Y y = X::Y(1); // Tries to call ctor Y instead of X::Y + X::f(X::Y(2)); // Tries to call Y instead of X::Y + + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors2.C b/gcc/testsuite/g++.old-deja/g++.law/ctors2.C new file mode 100644 index 000000000..21e1b2ad0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors2.C @@ -0,0 +1,70 @@ +// { dg-do run } +// GROUPS passed constructors +// Message-Id: +// Date: Fri, 10 Dec 93 11:33 EST +// From: neal@ctd.comsat.com (Neal Becker) +// Subject: serious problems with static constructors + +#include +#include +#include + +#define CONST const + +class Sig { + +public: + + enum Type { Byte_t, Word_t, Long_t, Float_t, Double_t, Complex_t, ComplexLong_t, Bad_t }; + +private: + + Type T; + +public: + + static CONST char *ByteMagic, *WordMagic, *LongMagic, + *FloatMagic, *DoubleMagic, *ComplexMagic, *ComplexLongMagic, *BadMagic; + + struct SigTable { + Type T; + CONST char* Magic; + }; + + static CONST SigTable sigTable[]; + +}; + +CONST char +*Sig::ByteMagic = "BYTE", +*Sig::WordMagic = "WORD", +*Sig::LongMagic = "LONG", +*Sig::FloatMagic = "FLOA", +*Sig::DoubleMagic = "DOUB", +*Sig::ComplexMagic = "COMP", +*Sig::ComplexLongMagic = "CMPL", +*Sig::BadMagic = NULL; + + +CONST Sig::SigTable Sig::sigTable[] = { + { Byte_t, ByteMagic }, + { Word_t, WordMagic }, + { Long_t, LongMagic }, + { Float_t, FloatMagic }, + { Double_t, DoubleMagic }, + { Complex_t, ComplexMagic }, + { ComplexLong_t, ComplexLongMagic }, + { Bad_t, BadMagic } +}; + +int main() { + if (strcmp (Sig::sigTable[0].Magic, "BYTE") + || strcmp (Sig::sigTable[1].Magic, "WORD") + || strcmp (Sig::sigTable[2].Magic, "LONG") + || strcmp (Sig::sigTable[3].Magic, "FLOA") + || strcmp (Sig::sigTable[4].Magic, "DOUB") + || strcmp (Sig::sigTable[5].Magic, "COMP")) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors20.C b/gcc/testsuite/g++.old-deja/g++.law/ctors20.C new file mode 100644 index 000000000..449f10da5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors20.C @@ -0,0 +1,35 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// Message-Id: <9311011758.AA25157@thneed.cs.duke.edu> +// From: Vivek Khera +// Subject: g++ 2.5.0 fails to automatically generate default initializer +// Date: Mon, 01 Nov 1993 12:58:34 -0500 + +class String +{ + private: + char a[100]; + int len; + public: + String(); +}; + +String::String() +{ + len = 0; +} + + +struct List +{ + String item[100]; + int num_items; +// List(); // uncomment this line to let compile work +}; + +int +main(int argc, char **argv) +{ + List a; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors21.C b/gcc/testsuite/g++.old-deja/g++.law/ctors21.C new file mode 100644 index 000000000..04cb653b7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors21.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// From: mln@tera.com (Mark Niehaus) +// Subject: g++-2.5.2 -- private copy ctor hides public ctor +// Date: Mon, 8 Nov 93 10:14:50 PST + +class A { + A(A&); + public: + A(); +}; + +class B { + A a; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors3.C b/gcc/testsuite/g++.old-deja/g++.law/ctors3.C new file mode 100644 index 000000000..523089e73 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors3.C @@ -0,0 +1,29 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctor file +// Message-Id: +// From: genehi@nesmith.pactitle.com (Gene Hightower) +// Subject: Apparent bug in g++ 2.5.2 +// Date: Wed, 10 Nov 93 18:24 PST + +class One { + public: + One() {} +}; + +template class Two : public One { +}; + +class Three { +}; + +class Four { + Two x[1]; +}; + +class Five { + Four y; + + public: + Five() {} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors4.C b/gcc/testsuite/g++.old-deja/g++.law/ctors4.C new file mode 100644 index 000000000..25f9c0607 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors4.C @@ -0,0 +1,28 @@ +// { dg-do run } +// { dg-options "-w" } +// GROUPS passed constructors +// ctors file +// Message-Id: +// From: Alf-Christian Achilles +// Subject: g++ 2.3.1 rejects initialization with object of derived class +// Date: 25 Nov 92 19:21:23 + +extern "C" int printf (const char *, ...); + +class A { +public: + virtual void foo() {}; +}; + +class B : public A { +public: + void foo() {}; +}; + +main () +{ + B b; + A a = b; //unjustified error: unexpected argument to constructor `A' + printf ("PASS\n"); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors5.C b/gcc/testsuite/g++.old-deja/g++.law/ctors5.C new file mode 100644 index 000000000..1776be949 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors5.C @@ -0,0 +1,37 @@ +// { dg-do assemble } +// { dg-options "-fshow-column" } +// GROUPS passed constructors +// ctors file +// Subject: bug in handling static const object of the enclosing class +// Date: Tue, 1 Sep 92 10:38:44 EDT + +class X // { dg-message "7:X::X|candidate expects" } implicit constructor +{ + private: + int x; + public: + static const X x0; + X( int ); +}; + +class Y // { dg-error "1:new types may not be defined in a return type" "err" } + // { dg-message "1:\\(perhaps a semicolon is missing after the definition of 'Y'\\)" "note" { target *-*-* } 17 } +{ + private: + X xx; + public: + Y(); +} +X::X( int xi ) // { dg-error "14:return type specification for constructor invalid" "err" } +// { dg-message "1:X::X|candidate expects" "match candidate text" { target *-*-* } 25 } +{ + x = xi; +} + +const X X::x0( 0 ); + +Y::Y() // { dg-error "6:no matching function for call to 'X::X\\(\\)'" } +// { dg-message "candidate" "candidate note" { target *-*-* } 33 } +{ + xx = X::x0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C new file mode 100644 index 000000000..ee26cb502 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed constructors +#include + +double foo(std::complex *a) +{ + return 0.0; +} + + +double bar(void) +{ + std::complex v[10]; + return foo(v); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors7.C b/gcc/testsuite/g++.old-deja/g++.law/ctors7.C new file mode 100644 index 000000000..d2e0ef309 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors7.C @@ -0,0 +1,35 @@ +// { dg-do assemble } +// GROUPS passed constructors +// ctors file +// Message-Id: <3JUL199214462623@envmsa.eas.asu.edu> +// From: peckham@envmsa.eas.asu.edu (Bill) +// Subject: const constructor causes crash +// Date: Fri, 3 Jul 1992 21:46:00 GMT + +class base_t { +public: + virtual const char* name () { return "base_t"; } + + base_t (); + virtual ~base_t (); +}; + +class d1_t : public base_t { +public: + virtual const char* name () { return "d1_t"; } + + // The const keyword on this constructor is an error, but it shouldn't + // cause the compiler to crash. + + d1_t () const;// { dg-error "" } .*const.* + virtual ~d1_t (); +}; + +class d2_t : public base_t { +public: + virtual const char* name () { return "d2_t"; } + + d2_t (int); + virtual ~d2_t (); +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors8.C b/gcc/testsuite/g++.old-deja/g++.law/ctors8.C new file mode 100644 index 000000000..0e5fa0a3f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors8.C @@ -0,0 +1,25 @@ +// { dg-do run } +// GROUPS passed constructors +// ctor file +// Message-Id: <199212160609.AA18247@phecda.cs.sfu.ca> +// From: Taj Khattra +// Subject: gcc 2.3.1 global ctor bug ? +// Date: Tue, 15 Dec 92 22:09:37 PST + +#include + +struct foo { + foo() : index(-1) {} + int index; +}; + +foo *arr = new foo[2]; + +int main() +{ + if (arr[0].index == -1 + && arr[1].index == -1) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors9.C b/gcc/testsuite/g++.old-deja/g++.law/ctors9.C new file mode 100644 index 000000000..d94495a25 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/ctors9.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// { dg-options "-pedantic-errors" } +// GROUPS passed constructors +// ctors file +// Message-Id: <9301132030.AA05210@cs.rice.edu> +// From: dougm@cs.rice.edu (Doug Moore) +// Subject: 2.3.3: accepts ctor-less derived class of ctor-ful base class +// Date: Wed, 13 Jan 93 14:30:21 CST +// Note: It gives an error now. But not a very good one. + +struct Foo +{ + Foo(int aa); + int a; + const Foo* operator-> () const {return this;} +}; + +Foo::Foo(int aa) +:a(aa) +{ } + + +struct var_Foo: public Foo // { dg-message "note" } base.*// ERROR - in class.* +{ + var_Foo* operator-> () {return this;} +}; + +int blort(Foo& f) +{ + return f->a; +} + +int main() +{ + var_Foo b(2);// { dg-error "match" } + // { dg-message "candidate" "candidate note" { target *-*-* } 35 } + b->a = 0; + int x = blort(b); + return x; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt1.C b/gcc/testsuite/g++.old-deja/g++.law/cvt1.C new file mode 100644 index 000000000..e50996e30 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt1.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// From: dak@pool.informatik.rwth-aachen.de +// Date: Sun, 21 Nov 93 17:40:32 +0100 +// Subject: g++ mixes up array dimensions with new +// Message-ID: <9311211640.AA11787@messua> + +int main() +{ + int (*a)[5] = new int[6][5]; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt10.C b/gcc/testsuite/g++.old-deja/g++.law/cvt10.C new file mode 100644 index 000000000..0ae9e20b4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt10.C @@ -0,0 +1,60 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: +// From: tom@izfcs.izf.tno.nl (Tom Vijlbrief) +// Subject: g++ 2.4.5 has problems with NON virtual shared base classes +// Date: Mon, 23 Aug 1993 12:10:34 GMT + + +#include + +#define FAIL + +class Base { +public: + Base() { printf("Base::Base\n"); } + virtual ~Base() { printf("Base::~Base\n"); } + virtual void v() { printf("Base::v\n"); } +}; + +class Base2 { +public: + Base2() { printf("Base2::Base2\n"); } + virtual ~Base2() { printf("Base2::~Base2\n"); } + virtual void v() { printf("Base2::v\n"); } +}; + +class A: public Base { +public: + A() { printf("A::A\n"); } + ~A() { printf("A::~A\n"); } + virtual void va() { printf("A::va\n"); } +}; + +#ifdef FAIL +class B: public Base { +#else +class B: public Base2 { +#endif +public: + B() { printf("B::B\n"); } + ~B() { printf("B::~B\n"); } + virtual void vb() { printf("B::vb\n"); } +}; + +class C: public A, public B { +public: + C() { printf("C::C\n"); } + ~C() { printf("C::~C\n"); } + void va() { printf("C::va\n"); } +}; + + +int main() +{ + C *cp= new C; + cp->va(); + delete cp; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt11.C b/gcc/testsuite/g++.old-deja/g++.law/cvt11.C new file mode 100644 index 000000000..53dd1e907 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt11.C @@ -0,0 +1,34 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Date: Tue, 10 Nov 92 11:08:08 PST +// From: rrh@tera.com (Robert R. Henry) +// Message-Id: <9211101908.AA13557@tera.com> +// Subject: type cast of qualified const member breaks g++2.3.1 + +// Ignore extra errors in C++0x mode. +// { dg-prune-output "non-static data member initializers" } +// { dg-prune-output "from this location" } +// { dg-prune-output "uninitialized" } +#include + +class Thing{ +private: int x; + public: const int N = -1; // { dg-error "" } bad initialization + Thing(int y); +}; + +class Bar{ public: void doit(void); }; + +void Bar::doit(void) +{ + int i, j; + i = Thing::N; + printf("i = %d\n", i); + + j = (int)Thing::N; + printf("i = %d\n", j); +} +Thing::Thing(int y) { x = y; } +int main(){ Bar x; x.doit(); } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt12.C b/gcc/testsuite/g++.old-deja/g++.law/cvt12.C new file mode 100644 index 000000000..d35a996e0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt12.C @@ -0,0 +1,30 @@ +// { dg-do run } +// GROUPS passed conversions +// cvt file +// Message-Id: <9301071708.AA03432@muresh.et.tudelft.nl> +// From: stravers@muresh.et.tudelft.nl (Paul Stravers) +// Subject: conversion method never called +// Date: Thu, 7 Jan 93 18:08:33 +0100 + +#include + +class test +{ + double d; + int i; +public: + test(double dd,int ii) {d=dd; i=ii;} // constructor + operator int&() {return i;} // define a conversion from test to int& + int& geti() {return i;} // same thing, but different +}; + +int main() +{ + test t(3.14, 5); // Create an object t of class "test" + int x = (int&)t; // This should call operator int&() but it does not ... + int y = t.geti(); // x and y should both be 5 ... + if (x == 5 && y == 5) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt13.C b/gcc/testsuite/g++.old-deja/g++.law/cvt13.C new file mode 100644 index 000000000..0dc085ef6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt13.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: +// From: ishai@cs.technion.ac.il (& Ben-Aroya) +// Subject: Type conversion problem. +// Date: Fri, 26 Mar 1993 08:25:09 GMT + +typedef int array[10]; + +void f(array &arg) +{ +} + +int main() +{ + array var; + f(var); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt14.C b/gcc/testsuite/g++.old-deja/g++.law/cvt14.C new file mode 100644 index 000000000..ca9b670b1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt14.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9303241504.AA25988@spock.orl.mmc.com> +// Subject: internal compiler error +// Date: Wed, 24 Mar 1993 10:04:06 -0500 +// From: "Malcolm C. Strickland" + + +int main() + { + double *d; + d = new double(10); + return 1; + } diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt15.C b/gcc/testsuite/g++.old-deja/g++.law/cvt15.C new file mode 100644 index 000000000..e9ecbfff3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt15.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9308051530.AA05922@NeoSoft.Com> +// From: daniels@sugar.neosoft.com (Brad Daniels) +// Subject: g++ 2.4.5: Conversion operators to complex types don't work either +// Date: Thu, 5 Aug 93 15:30:04 CDT + +class bar { int x; public: bar() : x(1){} }; + +class foo { + bar a, b; +public: + foo(bar i, bar j) : a(i),b(j) {} + operator const bar() const { return a; } + const bar f() { return *this; } + void g(foo &c) { b = c; } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C new file mode 100644 index 000000000..0c821b589 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9304121647.AA25819@tnt> +// From: mclaugh@tnt.acsys.com (Mark A. McLaughlin) +// Subject: g++ bug +// Date: Mon, 12 Apr 93 10:47:01 MDT + +#include + +class B { +}; + +class A : public B { + short s; +public: + A(short _s = 0) { s = _s; } + operator const short &() const { return s; } +}; + + int +main() { + A a(37); + //cout << a << endl; + std::cout << (short)a << std::endl; + + return 0; +} // main + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt17.C b/gcc/testsuite/g++.old-deja/g++.law/cvt17.C new file mode 100644 index 000000000..7567da2eb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt17.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9305210124.AA02409@kato.cs.brown.edu> +// From: pcm@cs.brown.edu (Peter C. McCluskey) +// Subject: illegal code compiles silently +// Date: Thu, 20 May 93 21:24:22 -0400 + + + +class Point {}; +class Line_Segment{ public: Line_Segment(const Point&){} }; +class Node { public: Point Location(){ Point p; return p; } }; + +int main() +{ + Node** node1; + Line_Segment(node1->Location()); // intended (*node1)// { dg-error "" } .* +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt18.C b/gcc/testsuite/g++.old-deja/g++.law/cvt18.C new file mode 100644 index 000000000..032399c52 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt18.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9307090042.AA28565@uluru.Stanford.EDU> +// From: interran@uluru.stanford.edu (John Interrante) +// Subject: gcc 2.4.5 on sparc-sun-sunos4.1.2: automatic conversion functions +// Date: Thu, 8 Jul 93 17:42:12 PDT + +class Token { +public: + operator const void*() const; + int operator !=(int code) const; +private: + int code_; +}; + +extern Token next_token(); + +void foo(Token token) { + if (token && token != '{') {} + + const int inside_body = 1; + if (inside_body && (token = next_token())) {} +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt19.C b/gcc/testsuite/g++.old-deja/g++.law/cvt19.C new file mode 100644 index 000000000..d1720ec45 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt19.C @@ -0,0 +1,27 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <1166.9307131600@ace.eng.cam.ac.uk> +// From: ajp@eng.cam.ac.uk +// Date: Tue, 13 Jul 93 17:00:44 BST + + +class B {}; + +class A { + public: + operator const B*() const { + return b; + } + private: + B* b; +}; + + +int main() +{ + A a; + if (a!=0) { + } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C new file mode 100644 index 000000000..afe138bd9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C @@ -0,0 +1,42 @@ +// { dg-do run } +// GROUPS passed conversions +#include +#include +#include +#include +#include + +class cvec { +public: + ~cvec(){ delete s; } + cvec(const char*x) { s = new char[std::strlen(x)+1]; std::strcpy(s, x); } + cvec(const cvec& c) { s = new char[std::strlen(c.s)+1]; std::strcpy(s, c.s); } + operator const char*() { return s; } +private: + char *s; +}; + +cvec +B(const char* a) +{ + return a; +} + +void +A(const char* s) +{ + // s still ok here + std::ifstream inf(s); + if (std::strncmp ("aaa", s, 3)) + { + std::printf ("FAIL\n"); + std::exit (1); + } + else + std::printf ("PASS\n"); +} + +int main() +{ + A(B("aaa")); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt20.C b/gcc/testsuite/g++.old-deja/g++.law/cvt20.C new file mode 100644 index 000000000..5d699d7f8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt20.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9307152250.AA24812@volterra> +// From: rst@ai.mit.edu (Robert S. Thau) +// Subject: g++ won't convert char[] to char*& +// Date: Thu, 15 Jul 93 18:50:59 EDT + + +// Compiles fine with Sun CC 2.1 + +void f(char *& x) // { dg-error "passing argument" } +{ + x++; +} + +int main() +{ + f ("foo"); // { dg-error "invalid initialization" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt21.C b/gcc/testsuite/g++.old-deja/g++.law/cvt21.C new file mode 100644 index 000000000..65cf5e87a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt21.C @@ -0,0 +1,36 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9307200528.AA02094@legolas> +// From: Mark Kuzmycz +// Subject: int & conversion operator +// Date: Tue, 20 Jul 93 15:28:47 EST + +class Int +{ + public: + Int(void); + Int(int); + Int(const Int&); + + Int* copy(void) const; + + operator int&(); + + Int& operator ++(void); + Int& operator --(void); + + private: + int value; +}; + +int main() +{ + Int data = 2; + Int test; + + test = data * 12; + data += 1; +} + +// UNKNOWN "FAIL" diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt22.C b/gcc/testsuite/g++.old-deja/g++.law/cvt22.C new file mode 100644 index 000000000..a5ca696ec --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt22.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <93Aug2.163542pdt.26892@franklin.parc.xerox.com> +// From: Jesse Hull +// Subject: typedef bug +// Date: Mon, 2 Aug 1993 16:35:28 PDT + +typedef int A[10]; + +int main() +{ + int* a1 = new A; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt23.C b/gcc/testsuite/g++.old-deja/g++.law/cvt23.C new file mode 100644 index 000000000..8fa877abc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt23.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9308051209.AA15962@NeoSoft.Com> +// From: daniels@sugar.neosoft.com (Brad Daniels) +// Subject: Bug in g++ 2.4.5: Conversion operators to enumerated types don't wor +// Date: Thu, 5 Aug 93 12:09:09 CDT + +enum bar { AAA, BBB }; + +class foo { + bar a, b; +public: + foo(bar i, bar j) : a(i),b(j) {} + operator const bar() const { return a; } + bar f() { return *this; } + void g(foo &c) { b = c; } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt3.C b/gcc/testsuite/g++.old-deja/g++.law/cvt3.C new file mode 100644 index 000000000..a020197e2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt3.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9308122113.AA14119@tnt.acsys.com> +// From: mclaugh@tnt.acsys.com (Mark A. McLaughlin) +// Subject: g++ bug +// Date: Thu, 12 Aug 93 15:13:23 MDT + + +class C { }; + +void f(C) { } + +void g(const C & c) { f(c); } + +void h(const C & c) { f(C(c)); } diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt4.C b/gcc/testsuite/g++.old-deja/g++.law/cvt4.C new file mode 100644 index 000000000..b66c3d41a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt4.C @@ -0,0 +1,28 @@ +// { dg-do run } +// GROUPS passed conversions +// cvt file +// Message-Id: <9308091213.AA11572@emmy.Mathematik.Uni-Dortmund.DE> +// From: Michael Strauch +// Subject: Bug in GCC 2.4.5 +// Date: Mon, 9 Aug 93 14:13:50 MESZ + +extern "C" int printf (const char *, ...); + +int destruct = 2; + + class Test{ + protected: + long x; + public: + Test(){;} + Test(long l) {x=l;} + ~Test() {if (--destruct == 0) printf ("PASS\n");} + }; + +int main() + { + long i=1; + Test t; + + t=(Test)i; + } diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt5.C b/gcc/testsuite/g++.old-deja/g++.law/cvt5.C new file mode 100644 index 000000000..8f5decc9b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt5.C @@ -0,0 +1,28 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <1992Jul31.142856.10082@ericsson.se> +// From: jonas@ericsson.se (Jonas Nygren) +// Subject: g++ bug +// Date: Fri, 31 Jul 1992 14:28:56 GMT + +class A {}; +class B : public A {}; + +B b; + +class R{ +public: + R() {} + operator B&() { return b; } +}; + +void f(A&) {} + +int main(){ + R r; + + f(r); // problem to cast to B& and then to A& +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt6.C b/gcc/testsuite/g++.old-deja/g++.law/cvt6.C new file mode 100644 index 000000000..0d00b74c9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt6.C @@ -0,0 +1,28 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// Message-Id: <9208261851.AA16997@josquin.media.mit.edu> +// From: bilmes@media.mit.edu +// Subject: gcc (g++) 2.2.2 constructing nested class from external scope +// Date: Wed, 26 Aug 92 14:51:17 -0400 + + +class foo { + + class bar { + int i; + public: + bar(int j) { i = j; } + }; + + bar b; +public: + foo() : b(3) {} + void test(bar lb) { b = lb; } +}; + + +int main() { + foo f; + f.test(34); // line 18 +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C new file mode 100644 index 000000000..e68adf021 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C @@ -0,0 +1,81 @@ +// { dg-do run } +// GROUPS passed conversions +// cvt file +// From: krste@icsi.berkeley.edu (Krste Asanovic) +// Date: Mon, 24 Aug 92 19:05:10 PDT +// Message-Id: <9208250205.AA26351@icsib43.ICSI.Berkeley.EDU> +// Subject: implicit int. convs. from member refs. in switch expressions + +#include + +class A +{ +public: + A(int j) { i = j; } + A(A& a) { i = a.i; } + operator int() { return i; } + + void assign(int v) { i = v; } + int i; +}; + +class B +{ +public: + B(A& inArg) : in(inArg), out(0) {} + + A& in; + A out; + + void run(); +}; + +void +B::run() +{ + // I get a "switch quantity not an integer" error for this statement. + switch (in) + // Replacing above with "switch (int(in))" removes the error. + { + case 0: + out = 1; + break; + default: + out = 0; + break; + } +} + +int main() +{ + A a(1); + + A& ar = a; + + A& ar2 = ar; + + // ....but no errors for this switch statement. + switch (ar2) + { + case 1: + std::printf ("PASS\n"); + break; + default: + { std::printf ("FAIL\n"); return 1; } + } + + B b(a); + a.assign(3); + b.run(); + a.assign(0); + b.run(); + + return 0; +} + + + + + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt8.C b/gcc/testsuite/g++.old-deja/g++.law/cvt8.C new file mode 100644 index 000000000..5743cba1c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt8.C @@ -0,0 +1,35 @@ +// { dg-do assemble } +// GROUPS passed conversions +// cvt file +// From: solomon@cs.wisc.edu (Marvin Solomon) +// Message-Id: <9209141509.AA23124@gjetost.cs.wisc.edu> +// Subject: g++ 2.2.2 seems to be forgetting a "const" +// Date: Mon, 14 Sep 92 10:09:58 -0500 + +extern "C" int printf (const char *, ...); + +struct A { + int i; +}; + +struct B { + int i; + operator const A&() const; +}; + +B::operator const A&() const { + static A a; + a.i = i; + printf("convert B to A at %x\n", &a); + return a; +} + +void f(A &a) { // { dg-error "" } in passing argument + printf("A at %x is %d\n", &a, a.i); +} + +int main() { + B b; + b.i = 99; + f(b);// { dg-error "" } .* +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt9.C b/gcc/testsuite/g++.old-deja/g++.law/cvt9.C new file mode 100644 index 000000000..48ee20003 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt9.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// { dg-options "-pedantic-errors" } +// GROUPS passed conversions +// cvt file +// Message-Id: +// From: joe@veritas.com (Joe Fasano) +// Subject: gcc-2.2.2 bug report +// Date: Thu, 17 Sep 92 13:27 PDT + +typedef int (*widget) (); + +class window { +public: + int Isopen (); +}; + +widget fp = (widget) &window::Isopen; // { dg-error "" } // ERROR - diff --git a/gcc/testsuite/g++.old-deja/g++.law/dossier1.C b/gcc/testsuite/g++.old-deja/g++.law/dossier1.C new file mode 100644 index 000000000..1b1593253 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/dossier1.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// { dg-options "-frtti" } +// GROUPS passed rtti +// dossier file +// Message-Id: <9212021501.AA02484@olympia.miro.com> +// From: rme@miro.com (Richard M. Emberson) +// Subject: bug +// Date: Wed, 2 Dec 92 07:01:30 PST + +class Vector { + int *p; + int sz; +public: + Vector(int ); + ~Vector(); + + int& operator[](int i); +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/dtors1.C b/gcc/testsuite/g++.old-deja/g++.law/dtors1.C new file mode 100644 index 000000000..069f1317c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/dtors1.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed destructors +// friends file +// From: offline!marc@ai.mit.edu (Marc Duponcheel) (Marc Duponcheel) +// Date: Sat, 6 Feb 93 23:31:22 PST +// Subject: some 2.2.2 bugs +// Message-ID: <9302070731.AA002jw@offline.UUCP> + +void f() +{ + int i; + i.i::~i();// { dg-error "" } .* +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/dtors2.C b/gcc/testsuite/g++.old-deja/g++.law/dtors2.C new file mode 100644 index 000000000..16262842f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/dtors2.C @@ -0,0 +1,41 @@ +// { dg-do run } +// GROUPS passed destructors +#include + +int destruct = 0; + +class bla { + +public: + + inline bla(const char * jim) { ; } + + inline ~bla() { destruct++; if (destruct == 2) printf ("PASS\n");} +}; + +class ulk { + +public: + + inline ulk() {} + inline ~ulk() {} + + void funk(const bla & bob) { ;} + // ^ interestingly, the code compiles right if + // this & is deleted (and therefore the parameter + // passed as value) +}; + +int main() { + + ulk dumm; + + dumm.funk(bla("laberababa")); // this compiles correctly + + dumm.funk((bla)"laberababa"); // this produces incorrect code - + // the temporary instance of + // the class "bla" is constructed + // but never destructed... + + +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/dtors3.C b/gcc/testsuite/g++.old-deja/g++.law/dtors3.C new file mode 100644 index 000000000..6f18a3e99 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/dtors3.C @@ -0,0 +1,38 @@ +// { dg-do run } +// GROUPS passed destructors +// dtor file +// Message-Id: <9301242117.AA04053@cs.rice.edu> +// From: dougm@cs.rice.edu (Doug Moore) +// Subject: 2.3.3: premature dtor of temp? +// Date: Sun, 24 Jan 93 15:17:07 CST + +#include +#include + +int killed = 0; + +class Foo +{ + int a; +public: + Foo() + :a(0) {;} + ~Foo() { killed++;} + Foo& operator << (int b) + { + a += b; + if (killed) + { + printf ("FAIL\n"); + exit (1); + } + return *this; + } +}; + +int main() +{ + Foo() << 1 << 3 << 5 << 7; + printf ("PASS\n"); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/dtors4.C b/gcc/testsuite/g++.old-deja/g++.law/dtors4.C new file mode 100644 index 000000000..5843bfc1a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/dtors4.C @@ -0,0 +1,23 @@ +// { dg-do run } +// GROUPS passed destructors +#include + +int destruct = 2; + +class a { + public: + char *p; + a(){ ; } + ~a(){ destruct--; if (! destruct) printf ("PASS\n");} +}; + +a test(){ + return a(); +} + +int main(){ + a ai; + + ai = test(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/dtors5.C b/gcc/testsuite/g++.old-deja/g++.law/dtors5.C new file mode 100644 index 000000000..220372ac1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/dtors5.C @@ -0,0 +1,34 @@ +// { dg-do run } +// GROUPS passed destructors +// dtor file: +// Message-Id: <1992Jun25.181845.18886@leland.Stanford.EDU> +// From: niz@leland.stanford.edu (Jim Nisbet) +// Subject: gcc 2.2.2 -- c++ bug: destructor called twice (example) +// Date: 25 Jun 92 18:18:45 GMT + +#include + +int things = 0; + +class foo { +public: + foo() { things++; } + foo(const foo&) { things++; } + ~foo() { things--; } + + int i; +}; + +void +sub(foo f) { + ; +} + + +int main() { + sub(foo()); + if (things == 0) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum1.C b/gcc/testsuite/g++.old-deja/g++.law/enum1.C new file mode 100644 index 000000000..7d54c664d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/enum1.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed enums +class X { + struct X1; + enum { A= sizeof(X1 *) }; //Causes a problem. + struct X1 { int i; }; + X1 *f(X1 *); +public: + X(void); +}; + +X::X1 *X::f(X1 *x) { + return x; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum2.C b/gcc/testsuite/g++.old-deja/g++.law/enum2.C new file mode 100644 index 000000000..47ad7fb05 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/enum2.C @@ -0,0 +1,27 @@ +// { dg-do assemble } +// { dg-options "-fshort-enums" } +// GROUPS passed enums +// enum file +// From: Jeff Gehlhaar +// Date: Mon, 4 Jan 1993 09:20:50 -0700 +// Subject: Enum bug, affects library +// Message-ID: <9301041720.AA17340@harvey> + +typedef unsigned long __fmtflags; +class ios { + public: + typedef __fmtflags fmtflags; + enum { skipws=01, left=02, right=04, internal=010, + dec=020, oct=040, hex=0100, + showbase=0200, showpoint=0400, uppercase=01000, showpos=02000, + scientific=04000, fixed=010000, unitbuf=020000, stdio=040000, + dont_close=0x80000000 //Don't delete streambuf on stream destruction + }; + + fmtflags setf (fmtflags, fmtflags); +}; + +// from +inline ios& dec(ios& i) +{ i.setf(ios::dec, ios::dec|ios::hex|ios::oct); return i; } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum3.C b/gcc/testsuite/g++.old-deja/g++.law/enum3.C new file mode 100644 index 000000000..0bf9b168d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/enum3.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed enums +// enum file +// From: frode@auticon.no +// Date: Wed, 13 Jan 93 9:24:50 PST +// Subject: enum trouble +// Message-ID: <"nac.no.001:13.00.93.18.40.52"@nac.no> + +typedef enum{on, off} TOGGLE; + +class field { +private: + TOGGLE toggle; +public: + virtual void on(void) { toggle = 3; };// { dg-error "" } .* + virtual void off(void) { toggle = on; };// { dg-error "" } .* +}; + +int main() +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum4.C b/gcc/testsuite/g++.old-deja/g++.law/enum4.C new file mode 100644 index 000000000..669506121 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/enum4.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// GROUPS passed enums +// enum file +// From: dougm@cs.rice.edu (Doug Moore) +// Date: Thu, 18 Mar 93 00:14:57 CST +// Subject: 2.3.3:Inconsistent behavior for enum conversions +// Message-ID: <9303180614.AA12123@cs.rice.edu> + +enum Enum {enumerator1, enumerator2}; + +struct Struct +{ + int i; + int getI(Enum) {return i;} // { dg-message "Struct::getI|no known conversion" } +}; + +int funct (Enum) +{ + return 0; +} + +int main() +{ + Enum e = enumerator1; + Struct s; + int x = funct(e+1);// { dg-error "invalid" } + int y = s.getI(e+1);// { dg-error "match" } + // { dg-message "candidate" "candidate note" { target *-*-* } 27 } + return x+y; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum6.C b/gcc/testsuite/g++.old-deja/g++.law/enum6.C new file mode 100644 index 000000000..c94e49f3d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/enum6.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed enums +// enum file +// From: polstra!jdp@uunet.uu.net (John Polstra) +// Date: Mon, 15 Nov 93 12:14 PST +// Subject: GCC 2.5.3 Enum Bitfield Causes Bogus Warning +// Message-ID: + + enum Color { Red, Green, Blue }; + + struct S { + Color c : 8; + } s; + + void foo() + { + s.c = Red; // <== This statement produces the warning message. + } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum7.C b/gcc/testsuite/g++.old-deja/g++.law/enum7.C new file mode 100644 index 000000000..1511c79c6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/enum7.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed enums +// friends file +// From: offline!marc@ai.mit.edu (Marc Duponcheel) (Marc Duponcheel) +// Date: Sat, 6 Feb 93 23:31:22 PST +// Subject: some 2.2.2 bugs +// Message-ID: <9302070731.AA002jw@offline.UUCP> + +class X +{ + enum E { A, B }; +static enum E e; +}; +enum X::E X::e = A; diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum9.C b/gcc/testsuite/g++.old-deja/g++.law/enum9.C new file mode 100644 index 000000000..5a74b2f6f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/enum9.C @@ -0,0 +1,27 @@ +// { dg-do run } +// { dg-options "-fshort-enums" } + +// On ARM EABI targets this testcase will cause a warning to be emitted +// whilst EABI attributes are being merged at link time unless +// the --no-enum-size-warning option is passed to the linker. Whilst the +// enum-size attributes should only be emitted if there are values of +// enum type that can escape the compilation unit, gcc cannot currently +// detect this; if this facility is added then this linker option should +// not be needed. arm-*-linux*eabi should be a good approximation to +// those platforms where the EABI supplement defines enum values to be +// 32 bits wide. +// { dg-options "-fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } } + +// GROUPS passed enums + extern "C" int printf (const char *, ...); + + enum E { A = 0x80000000, B = 0 }; + + main() + { + if (sizeof (E) != 4) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); + return 0; + } diff --git a/gcc/testsuite/g++.old-deja/g++.law/except1.C b/gcc/testsuite/g++.old-deja/g++.law/except1.C new file mode 100644 index 000000000..9a2123c3e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/except1.C @@ -0,0 +1,29 @@ +// { dg-do assemble } +// { dg-options "-fexceptions" } +// GROUPS passed exceptions +// except file +// Message-Id: <9207221230.AA08566@life.ai.mit.edu> +// From: EWALLACE@endvmtkl.vnet.ibm.com +// Subject: Bugs +// Date: Wed, 22 Jul 92 08:29:30 EDT + +extern "C" void puts(const char *); + +class foo { +public: + class error {}; + + void cause_error(void) { throw error(); } +}; + +int main(void) +{ + foo f; + try { + f.cause_error(); + } + catch (foo::error) { + puts("Caught it."); + } + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/except2.C b/gcc/testsuite/g++.old-deja/g++.law/except2.C new file mode 100644 index 000000000..c16cfb4be --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/except2.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// { dg-options "-fexceptions -g" } +// GROUPS passed exceptions +// except file +// Message-Id: <9211061330.AA29334@ifad.dk> +// From: erik@ifad.dk (Erik Toubro Nielsen) +// Subject: g++-2.3.1 gets fatal signal with -g and -fhandle-exceptions +// Date: Fri, 6 Nov 92 14:30:33 +0100 + +int main() +{ + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/except3.C b/gcc/testsuite/g++.old-deja/g++.law/except3.C new file mode 100644 index 000000000..ec8bb100e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/except3.C @@ -0,0 +1,50 @@ +// { dg-do assemble } +// { dg-options "-fexceptions" } +// GROUPS passed exceptions +// except file +// Message-Id: <9211301118.AA09810@ss670mp.geco.slb.com> +// From: willoch@ss670mp.oslo.sgp.slb.com (thorbjorn willoch) +// Subject: -fansi-exceptions bug +// Date: Mon, 30 Nov 92 11:18:05 GMT + +extern "C" int printf(const char *, ...); + +class Vector +{ + int* p; + int sz; + public: + Vector(int s) { p = new int[sz=s]; } + ~Vector() {delete [] p; } + int size() {return sz; } + class Range{}; + + + int& operator[](int i); +}; + +int& Vector::operator[](int i) +{ + if(0<=i && i +// From: akkersdi@hio.hen.nl +// Subject: exceptions broken +// Date: Wed, 7 Jul 1993 16:56:52 +0200 (MET DST) + +class ball { +public: int dummy; + ball() : dummy(0) { ; } +}; + +void pitcher() +{ + throw ball(); +} + +void catcher() +{ + try // <=== gcc 2.* fails here + { + pitcher(); + } + catch (ball) { + /* sleepy catcher doing nothing */ ; + } +} + +int main() +{ + catcher(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C new file mode 100644 index 000000000..a99ad8a48 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// { dg-options "-fexceptions" } +// GROUPS passed exceptions +// except file +// Message-Id: <199311101607.AA11803@hsi86.hsi.com> +// From: Grigory Tsipenyuk +// Subject: exception's bug? +// Date: Wed, 10 Nov 1993 11:07:12 -0500 + +#include + +class X { + int *a; + int sz; +public: + class range { }; // exception class + X(int s) { a=new int[sz=s]; } + int& operator[](int i); +}; + +int& X::operator[](int i) +{ + if (i < 0 || i >= sz) { + throw range(); + } + return a[i]; +} + +int +main() +{ + X c(10); + try { + for (int i = 0; i < 12; i++) + c[i] = 1; + } catch (X::range) { + std::cerr << "invalid range\n"; + } + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/except6.C b/gcc/testsuite/g++.old-deja/g++.law/except6.C new file mode 100644 index 000000000..05f54e60a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/except6.C @@ -0,0 +1,27 @@ +// { dg-do assemble } +// { dg-options "-fexceptions" } +// GROUPS passed exceptions +// except file +// From: GUSTAVO%DRAGON@orion.cpqd.ansp.br +// Date: 15 Dec 1993 09:33:30 +0000 (C) +// Subject: exception handling problem +// Message-ID: <01H6I5GEAF5UPBJ0UV@VENUS.CPQD.ANSP.BR> + +struct Exception + { + int v; + Exception(int i) { v = i; }; + }; + +void inc(int &i) + { + try { + if (i == 0) + throw Exception(i); + else + i++; + } + catch (Exception v) { + i = v.v; + } + } diff --git a/gcc/testsuite/g++.old-deja/g++.law/friend1.C b/gcc/testsuite/g++.old-deja/g++.law/friend1.C new file mode 100644 index 000000000..9cc1d3564 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/friend1.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed friends +// friends file +// From: rwave!myersn%rwave.roguewave@cs.orst.edu (Nathan Myers) +// Date: Thu, 17 Dec 92 16:33 PST +// Subject: 2.3.2: friend decl of new confuses constructor +// Message-ID: + +#include +#include +struct Foo { + friend void* operator new(size_t) throw (std::bad_alloc); + friend void operator delete(void*) throw (); + Foo(); + ~Foo(); +}; +Foo::Foo() { } +Foo::~Foo() { } diff --git a/gcc/testsuite/g++.old-deja/g++.law/friend4.C b/gcc/testsuite/g++.old-deja/g++.law/friend4.C new file mode 100644 index 000000000..470e6f6b5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/friend4.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed friends +// friends file +// From: osinski@cs.nyu.edu (Ed Osinski) +// Date: Fri, 05 Jun 92 20:47:37 -0400 +// Subject: parameter name forgotten in certain friends +// Message-ID: <9206060047.AA05594@MURRAY.CS.NYU.EDU> + +class T2; + +class T { + friend void f (int&); +}; + +class T2 { + friend void f (int& i) { // BOGUS - + i = 1; + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/friend5.C b/gcc/testsuite/g++.old-deja/g++.law/friend5.C new file mode 100644 index 000000000..0a55ce4cb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/friend5.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// { dg-options "-Wreturn-type" } +// GROUPS passed friends + + extern "C" int good_friend(int); + extern "C" int bad_friend(); + + class assembler { + friend int good_friend(int); + friend int bad_friend(); + void *parts; + }; + + assembler obj; + + int good_friend(int) + { + obj.parts = 0; + } // { dg-warning "non-void" } + + int bad_friend() + { + obj.parts = 0; + } // { dg-warning "non-void" } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/global-init1.C b/gcc/testsuite/g++.old-deja/g++.law/global-init1.C new file mode 100644 index 000000000..ad25edb6b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/global-init1.C @@ -0,0 +1,21 @@ +// { dg-do run } +// GROUPS passed initialization +// global-init file +// Message-Id: <9212021756.AA12639@grumpy.pocs.com> +// From: wp@pocs.com (Wolfgang Polak) +// Subject: Initializers - gcc 2.2.2 (g++), SPARC, SunOS 4.1.1 +// Date: Wed, 2 Dec 92 09:56:01 PST + +#include +struct S { int a; int c; }; +int i = 3; +S s = {6, i}; +S * the_s () { return &s; } +int main () +{ + S * cls = the_s (); + if (cls->a != 6) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/incdec1.C b/gcc/testsuite/g++.old-deja/g++.law/incdec1.C new file mode 100644 index 000000000..b1fc4c404 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/incdec1.C @@ -0,0 +1,47 @@ +// { dg-do assemble } +// { dg-options "-w -O3" } +// GROUPS passed incdec +typedef void* Pix; +class ndbArtPtrVec +{ +public: + ndbArtPtrVec (ndbArtPtrVec&); +}; +class intndbArtPtrVecMap +{ +protected: + int count; + ndbArtPtrVec def; + intndbArtPtrVecMap(ndbArtPtrVec& dflt); + virtual ndbArtPtrVec& operator [] (int key) = 0; + virtual void del(int key) = 0; +public: + virtual Pix first() = 0; + virtual void next(Pix& i) = 0; + virtual int& key(Pix i) = 0; + virtual ndbArtPtrVec& contents(Pix i) = 0; +}; +struct intndbArtPtrVecAVLNode +{ + ndbArtPtrVec cont; + intndbArtPtrVecAVLNode(int h, ndbArtPtrVec& c, + intndbArtPtrVecAVLNode* l=0, intndbArtPtrVecAVLNode* r=0); +}; +class intndbArtPtrVecAVLMap : intndbArtPtrVecMap +{ +protected: + intndbArtPtrVecAVLNode* root; +public: + ndbArtPtrVec& operator [] (int key); + intndbArtPtrVecAVLMap(intndbArtPtrVecAVLMap&); +}; +ndbArtPtrVec& intndbArtPtrVecAVLMap::operator [] (int item) +{ + ++count; + root = new intndbArtPtrVecAVLNode(item, def); +} +intndbArtPtrVecAVLMap::intndbArtPtrVecAVLMap(intndbArtPtrVecAVLMap& b) :intndbArtPtrVecMap(b.def) +{ + for (Pix i = b.first(); i != 0; b.next(i)) + (*this)[b.key(i)] = b.contents(i); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init1.C b/gcc/testsuite/g++.old-deja/g++.law/init1.C new file mode 100644 index 000000000..1727e387b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init1.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// { dg-prune-output "non-static data member initializers" } +// GROUPS passed initialization +class foo { +public: + int data; + foo(int dat) { data = dat; } +}; + +class bar { +public: + foo f[3] = { 1, 2, 3 }; // works: f[0] = 1, f[1] = 2, f[2] = 3 // { dg-error "" } ANSI C++ forbids initialization of member f; +}; + +class bar2 { +public: + foo f[3] = { foo(1), foo(2), foo(3) }; // { dg-error "" } ANSI C++ forbids initialization of member f; + // does not compile -- error: field initializer is not constant +}; + +int main(void) +{ + foo f[3] = { foo(1), foo(2), foo(3) }; + // standard C++ ... and it works too! :) + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init10.C b/gcc/testsuite/g++.old-deja/g++.law/init10.C new file mode 100644 index 000000000..90e3e45d6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init10.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// GROUPS passed initialization +// init file +// From: Ingo Donasch +// Date: Wed, 16 Jun 93 13:28:55 +01:00 +// Subject: g++-2.4.2 bug report +// Message-ID: <199306161128.AA22079@opamp.specs.de> + +class b; + +class a { +public: + a(const b*); // needs this parameter +}; + +class b { +private: + a three[3]; +public: + b(); +}; + +b::b() : three(this) // { dg-error "array" } +{ +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/init11.C b/gcc/testsuite/g++.old-deja/g++.law/init11.C new file mode 100644 index 000000000..7ac210f98 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init11.C @@ -0,0 +1,25 @@ +// { dg-do run } +// GROUPS passed initialization +// init file +// From: hansen@srd.ull.rdc.toshiba.co.jp +// Date: Mon, 13 Dec 93 18:27:51 +0900 +// Subject: g++ Bug +// Message-ID: <9312130927.AA08192@VLCS151.noname> + +#include + +int X = 7; + +struct foo { + int a,b,c; +}; + +struct foo Ack = {5, X, 3}; + +int main() +{ + if (Ack.a == 5 && Ack.b == 7 && Ack.c == 3) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init13.C b/gcc/testsuite/g++.old-deja/g++.law/init13.C new file mode 100644 index 000000000..3a287187a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init13.C @@ -0,0 +1,20 @@ +// { dg-do run } +// GROUPS passed initialization +// init file +// Message-Id: <9306280834.AA20921@slsvitt.us-es.sel.de> +// From: David Binderman 3841 +// Subject: Page 289 of the ARM +// Date: Mon, 28 Jun 93 10:34:37 +0200 + +struct T { + int m; + + T( int g):m(g){} +}; + +// T s1[2][2] = {1,2,3,4}; + +int main() { + T s1[2][2] = {1,2,3,4}; + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init14.C b/gcc/testsuite/g++.old-deja/g++.law/init14.C new file mode 100644 index 000000000..2305fde42 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init14.C @@ -0,0 +1,27 @@ +// { dg-do run } +// GROUPS passed initialization +// init file +// From: hansen@srd.ull.rdc.toshiba.co.jp +// Message-Id: <9312130927.AA08192@VLCS151.noname> +// Subject: g++ Bug +// Date: Mon, 13 Dec 93 18:27:51 +0900 + +#include + +int X = 7; + +struct foo { + int a,b,c; +}; + +struct foo Ack = {5, X, 3}; + +int main() +{ + if (Ack.a != 5 + || Ack.b != 7 + || Ack.c != 3) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init2.C b/gcc/testsuite/g++.old-deja/g++.law/init2.C new file mode 100644 index 000000000..110959580 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init2.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed initialization +// init file +// From: lupine!segfault!rfg@uunet.UU.NET +// Date: Sun, 27 Sep 92 14:06:22 MDT +// Subject: Bug in g++ (920220) handling reference initializers. +// Message-ID: <15409.717627982@segfault> + +int * const & fiddle = 0; diff --git a/gcc/testsuite/g++.old-deja/g++.law/init3.C b/gcc/testsuite/g++.old-deja/g++.law/init3.C new file mode 100644 index 000000000..92f4ed79d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init3.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// GROUPS passed initialization +// init file +// From: thayer@moose.cs.columbia.edu (Charles Thayer) +// Date: Wed, 30 Sep 92 02:38:17 EDT +// Subject: small bug +// Message-ID: <9209300638.AA22334@moose.cs.columbia.edu> + +int main() { +int offset; +char buf[offset]=""; // { dg-error "" } ansi forbids variable arrays +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init4.C b/gcc/testsuite/g++.old-deja/g++.law/init4.C new file mode 100644 index 000000000..382de3302 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init4.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// { dg-options "-pedantic-errors" } +// GROUPS passed initialization +class Time; +class TimeNote; + +class SvTime +{ +public: + static TimeNote *time_events = 0;// { dg-error "" } .* +}; + +SvTime CurrentTime = {0};// { dg-error "" } diff --git a/gcc/testsuite/g++.old-deja/g++.law/init5.C b/gcc/testsuite/g++.old-deja/g++.law/init5.C new file mode 100644 index 000000000..c1d647b1b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init5.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// { dg-options "-pedantic-errors" } +// GROUPS passed initialization +// init file +// From: dcb@us-es.sel.de +// Date: Mon, 12 Oct 92 07:51:52 +0100 +// Subject: G++, ARM Page 141 +// Message-ID: <9210120651.AA15257@us-es.sel.de> + +extern int fred( int); + +class X { + public : + void f( int = fred( 0) ) ; // { dg-error "" } previous spec +} ; + +void X::f( int x = fred( 0) ) {// { dg-error "" } .* +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init6.C b/gcc/testsuite/g++.old-deja/g++.law/init6.C new file mode 100644 index 000000000..861b9252c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init6.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed initialization +class Vector { + double *v; + int size; + +public: + Vector(int n); + ~Vector(); +}; + +exmpl() { Vector x(8)[16]; }// { dg-error "" } .* + diff --git a/gcc/testsuite/g++.old-deja/g++.law/init7.C b/gcc/testsuite/g++.old-deja/g++.law/init7.C new file mode 100644 index 000000000..0b047b85b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init7.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// GROUPS passed initialization +class test + { + public: + int x; + int y; + test (int val) { x = val; y = 0;} + }; + +test ar(34)[5];// { dg-error "" } .* diff --git a/gcc/testsuite/g++.old-deja/g++.law/init8.C b/gcc/testsuite/g++.old-deja/g++.law/init8.C new file mode 100644 index 000000000..ba8dde2e8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init8.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed initialization +// init file +// From: kol@world.std.com (Nikolay Yatsenko) +// Date: Wed, 27 Jan 1993 16:39:13 -0500 +// Subject: g++ bug +// Message-ID: <199301272139.AA25514@world.std.com> + + +const int ic = 1; +void f(int& arg) // { dg-error "passing argument 1" } +{ + if (arg) ; +} +const int& icr = ic; + +int main(void) +{ + f(icr); // { dg-error "invalid initialization" } + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/init9.C b/gcc/testsuite/g++.old-deja/g++.law/init9.C new file mode 100644 index 000000000..7ceb64106 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/init9.C @@ -0,0 +1,36 @@ +// { dg-do run } +// GROUPS passed initialization +// init file +// From: Richard Speed +// Date: Sun, 6 Jun 1993 15:19:41 -0600 (MDT) +// Subject: excess elements in aggr initzer +// Message-ID: + +extern "C" int printf (const char *, ...); + +class samp { + int a; +public: + samp(int n) { a = n; } + int get_a() { return a; } +}; + +int main() { + samp ob[4] [2] = { // Generated Error + 1, 2, + 3, 4, + 5, 6, + 7, 8, + }; + int i; + + if (ob[0][0].get_a() == 1 && ob[0][1].get_a() == 2 + && ob[1][0].get_a() == 3 && ob[1][1].get_a() == 4 + && ob[2][0].get_a() == 5 && ob[2][1].get_a() == 6 + && ob[3][0].get_a() == 7 && ob[3][1].get_a() == 8) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/inline4.C b/gcc/testsuite/g++.old-deja/g++.law/inline4.C new file mode 100644 index 000000000..8a839ccca --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/inline4.C @@ -0,0 +1,21 @@ +// { dg-do run } +// GROUPS passed inlining +// inline file +// Message-Id: <9306020823.AA14027@joker> +// From: stefan@mpi-sb.mpg.de +// Subject: gcc-2.4.2 template function bug (1) +// Date: Wed, 2 Jun 93 10:23:14 +0200 + +extern "C" int printf (const char *, ...); + +template inline T func(const T& x) { return x; } + +inline int func(const int& x) { return x; } + + +int main() +{ int x; + func(x); + printf ("PASS\n"); + } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/inline6.C b/gcc/testsuite/g++.old-deja/g++.law/inline6.C new file mode 100644 index 000000000..20f396dd0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/inline6.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// GROUPS passed inlining +// inline file +// Message-Id: <199307162240.AA04019@world.std.com> +// From: kol@world.std.com (Nikolay Yatsenko) +// Subject: g++ bug: crash with extern C friend +// Date: Fri, 16 Jul 1993 18:40:48 -0400 + +inline void Ignore(){} + +extern "C" void foo() {} // but without extern C g++ compiles it + +struct A +{ + void f() {Ignore();} + friend void foo (); +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/inline7.C b/gcc/testsuite/g++.old-deja/g++.law/inline7.C new file mode 100644 index 000000000..c064c98c4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/inline7.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed inlining + template +struct A { + typedef int X; + A() {} + virtual ~A() { } +}; + template +struct B : public A { + B() { } +}; +B::X x; diff --git a/gcc/testsuite/g++.old-deja/g++.law/mentor1.C b/gcc/testsuite/g++.old-deja/g++.law/mentor1.C new file mode 100644 index 000000000..4011b1659 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/mentor1.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// { dg-options "-O" } +// GROUPS passed mentor +struct Word { + struct S1 *p1; +}; +struct S1 { + Word o; + void shift_left(int delta, int ct); +}; +inline void S1::shift_left(int delta, int ct) +{ + int cnt = ct; + for (S1 *to_p = this, *from_p = to_p + delta; cnt--;) *to_p++ = *from_p++; +} + +void dispose_t(S1 *tp, int from_index, int ct, const int d_last_t) +{ + int new_ct = d_last_t + 1 - ct; + tp[0].o.p1[from_index].shift_left(ct, new_ct - from_index); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error1.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error1.C new file mode 100644 index 000000000..17722a576 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error1.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed missed-error +// missed-error file +// From: John Carr +// Date: Tue, 02 Feb 1993 07:38:53 EST +// Subject: Re: g++ ignores language context of function pointers +// Message-ID: <9302021238.AA01513@Achates.MIT.EDU> + +typedef void (*pfv)(); +void f (); + +extern "C" +{ + typedef void (*pcfv)(void); + void cf (void); +} + +pfv p = f; +pfv p2 = cf; // { dg-error "" "" { xfail *-*-* } } mismatch +pcfv p3 = f; // { dg-error "" "" { xfail *-*-* } } mismatch +pcfv p4 = cf; diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C new file mode 100644 index 000000000..7d058fd89 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C @@ -0,0 +1,37 @@ +// { dg-do assemble } +// GROUPS passed missed-error +// missed-error file +// From: ndc!don@csvax.cs.caltech.edu (Don Erway) +// Date: Thu, 21 May 92 15:40:45 PDT +// Subject: More on [g++ 2.1 : overloaded function selection incorrect] +// Message-ID: <9205212240.AA17934@ndc.com> + +#include + +// The VxWorks kernel-mode headers define a macro named "max", which is not +// ISO-compliant, but is part of the VxWorks API. +#if defined __vxworks && !defined __RTP__ +#undef max +#endif + +inline int max(int a, int b) {return a > b ? a : b;}; // { dg-message "note" } + // { dg-error "extra ';'" "extra ;" { target *-*-* } 17 } +inline double max(double a, double b) {return a > b ? a : b;}; // { dg-message "note" } candidate + // { dg-error "extra ';'" "extra ;" { target *-*-* } 19 } + +int main() { + static void foo(int i, int j, double x, double y) ;// { dg-error "" } .* + + foo(4, -37, 14.39, 14.38); +} + +// 971006 we no longer give an error for this since we emit a hard error +// about the declaration above +static void foo(int i, int j, double x, double y) { + + std::cout << "Max(int): " << max(i,j) << " Max(double): " << +max(x,y) << '\n'; + std::cout << "Max(int, double): " << max(i, y) << '\n';// { dg-error "" } + // { dg-message "candidate" "candidate note" { target *-*-* } 34 } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error3.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error3.C new file mode 100644 index 000000000..9f81bb451 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error3.C @@ -0,0 +1,124 @@ +// { dg-do assemble } +// GROUPS passed missed-error +// missed-error file +// From: Neil Wilson +// Date: Tue, 28 Apr 92 13:53:54 WET DST +// Subject: g++ version 2.1 bugs +// Message-ID: <15717.9204281253@cch.coventry.ac.uk> + + +// enum bool { FALSE = 0, TRUE = 1 }; + +typedef int T; + +class Traversable { +public: + virtual const T item() const = 0; + virtual const bool off() const = 0; + virtual ~Traversable() { } +}; + +class Chain : public Traversable { +public: + virtual const int count() const = 0; + virtual const bool empty() const = 0; + virtual void forth() const = 0; + virtual const bool isfirst() const = 0; + virtual const bool islast() const = 0; + virtual const int position() const = 0; + virtual const T first() const = 0; + virtual const T last() const = 0; + virtual const T i_th(const int index) const = 0; + virtual void start() const = 0; + virtual void back() const = 0; + virtual void finish() const = 0; + virtual void move(const int index) const = 0; + virtual void go(const int index) const = 0; + virtual void put(const T value) = 0; + virtual void put_i_th(const T value, const int index) = 0; + virtual void swap(const int index) = 0; + virtual void wipe_out() = 0; +}; +class List : public Chain { +protected: + int item_count; + int cursor_position; + virtual void go_offleft() const = 0; + virtual void go_offright() const = 0; + virtual void copy(const List& other) = 0; +public: + List() : item_count(0), cursor_position(0) { } + virtual const int count() const; + virtual const bool empty() const; + virtual const bool isfirst() const; + virtual const bool islast() const; + virtual const bool offleft() const; + virtual const bool offright() const; + virtual const bool off() const; + virtual const int position() const; + virtual const T first() const; + virtual const T last() const; + virtual const T i_th(const int index) const; + virtual void start() const; + virtual void forth() const; + virtual void back() const; + virtual void finish() const; + virtual void move(const int index) const; + virtual void go(const int index) const; + friend const bool operator==(const List& left, + const List& right); + friend const bool operator!=(const List& left, + const List& right); + virtual void put_i_th(const T value, const int index); + virtual void swap(const int index); +}; +typedef int T; +class Array { +private: + int lower_index; + int upper_index; + T *array; +protected: + virtual void allocate(const int minindex, const int maxindex); + virtual void copy(const Array&other); +public: + Array(const int minindex, const int maxindex); + Array(const Array& other); + virtual const int count() const; + virtual const int lower() const; + virtual const int upper() const; + virtual const T item(const int index) const; + const T Array::operator[](const int index); // { dg-error "" } qualification ignored + virtual const bool valid_index(const int index) const; + virtual const bool empty() const; + friend const bool operator==(const Array& left, const Array& right); + friend const bool operator!=(const Array& left, const Array& right); + virtual void put(const T value, const int index); + virtual void wipe_out(); + Array& operator=(const Array& other); + virtual ~Array(); +}; +class Fixed_List: public List, private Array { +protected: + virtual void go_offleft() const; + virtual void go_offright() const; + virtual void copy(const List& other); +public: + Fixed_List(const List& other); + Fixed_List(const int size): Array(1, size) { } + virtual const bool empty() const; + virtual const int count() const; + virtual const T item() const; + virtual const T i_th(const int index) const; + virtual void move(const int index) const; + virtual void put(const T value); + virtual void put_i_th(const T value, const int index); + virtual void wipe_out() { } + Fixed_List& operator=(const List& other); +}; + +void Fixed_List::go_offleft() const +{ + cursor_position = 0;// { dg-error "" } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/missing1.C b/gcc/testsuite/g++.old-deja/g++.law/missing1.C new file mode 100644 index 000000000..9afeef6ef --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/missing1.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// GROUPS passed missing +// missing file +// Message-Id: <9207100259.AA11702@quaestor> +// From: adam@inference.com (David Adam) +// Subject: G++ does not allow parens around declarators. +// Date: Thu, 9 Jul 92 19:59:51 PDT + +void foo() +{ + long (bar)[5]; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest1.C b/gcc/testsuite/g++.old-deja/g++.law/nest1.C new file mode 100644 index 000000000..7b2cae55b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/nest1.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed nest +// nest file +// From: gs4t@virginia.edu (Gnanasekaran Swaminathan) +// Date: Wed, 30 Dec 1992 20:38:07 GMT +// Subject: Local type names bug in g++ 2.3.3 +// Message-ID: <1992Dec30.203807.17504@murdoch.acc.Virginia.EDU> + +typedef char* T; // { dg-error "" } previous declaration + +struct Y { + T a; + typedef long T; // error. See ARM p189-191 for details// { dg-error "" } + T b; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest2.C b/gcc/testsuite/g++.old-deja/g++.law/nest2.C new file mode 100644 index 000000000..cee335d9d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/nest2.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed nest +struct B +{ + class B_I { }; +}; + +struct D : public B +{ + B_I foo; + class I : public B_I { }; +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C new file mode 100644 index 000000000..daeaa201b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// GROUPS passed nest +#include + +struct inner { + static void f() { std::cout << "inner::f()\n";} +}; + +struct outer { + + struct inner { + static void f() { std::cout << "outer::inner::f()\n";} + }; + + static void f() { + inner::f(); //call of outer::inner::f() + ::inner::f(); //(try to) call inner::f() => parse error + } +}; + +int main() { + outer::f(); + std::cout << std::endl; + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest4.C b/gcc/testsuite/g++.old-deja/g++.law/nest4.C new file mode 100644 index 000000000..ed9d2828a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/nest4.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed nest +// nest file +// From: Neal Young +// Date: Mon, 11 Oct 93 17:03:59 EDT +// Subject: g++ 2.4.5 bug report: local class decl can't access local static var +// Message-ID: <9310112103.AA06326@cs> + +void f() +{ + static int s; + + struct local { + int j() { return s; } // should be okay, see 1991 ref. man. r.9.8 + }; +} + +int main() +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest5.C b/gcc/testsuite/g++.old-deja/g++.law/nest5.C new file mode 100644 index 000000000..892337ccf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/nest5.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// GROUPS passed nest +// nest file +// From: tal@vlsi.cs.caltech.edu +// Date: Mon, 11 Oct 93 16:26:02 -0700 +// Subject: Serious bug: g++2.4.5 -Doesn't support local classes +// Message-ID: <9310112325.AA13386@vlsi.cs.caltech.edu> + +void foo() { + class Wrapper { + public: + void F (void * Wrapperptr) + { + Wrapper * wrapptr = ( Wrapper *) Wrapperptr; + } + }; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators10.C b/gcc/testsuite/g++.old-deja/g++.law/operators10.C new file mode 100644 index 000000000..fe36beced --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators10.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-eq file +// Message-Id: <9306040324.AA22954@balder.cs.wisc.edu> +// From: so@cs.wisc.edu (Bryan So) +// Subject: g++ bug +// Date: Thu, 3 Jun 93 22:24:13 -0500 + +template +struct Test { + int data; + Test& operator=(int i) { data = i; return *this; } +}; + + +int main() +{ + Test i, j; + + i = j; + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators11.C b/gcc/testsuite/g++.old-deja/g++.law/operators11.C new file mode 100644 index 000000000..6c2883083 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators11.C @@ -0,0 +1,36 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-eq file +// Message-Id: +// From: rowlands@hc.ti.com (Jon Rowlands) +// Subject: g++ 2.4.5: assignment operator in base class +// Date: Mon, 30 Aug 1993 00:54:29 GMT + +class B { +public: + B & operator = (B); // delete this line and problem goes away +}; + +class D : public B { +public: + D(); + D(int); + D(B); +}; + +int +main() { + B b; + D d; + + d = d; + + d = 0; // t.cxx:20: assignment not defined for type `D' + d = D(0); + + d = b; // t.cxx:23: assignment not defined for type `D' + d = D(b); + + return(0); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators12.C b/gcc/testsuite/g++.old-deja/g++.law/operators12.C new file mode 100644 index 000000000..2533a7e2d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators12.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-eq file +// Message-Id: <199311181618.AA27761@oil.cs.columbia.edu> +// From: Sam Fenster +// Subject: g++ 2.5.3 can't disable assignment +// Date: Thu, 18 Nov 1993 11:18:18 -0500 + +class B + { + B &operator = (const B &); //Disable assignment! + public: + virtual ~B () {} + }; + +class D: public B + { + public: + D () {} + }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators13.C b/gcc/testsuite/g++.old-deja/g++.law/operators13.C new file mode 100644 index 000000000..3aba4f6aa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators13.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-eq file +// Message-Id: <1993Nov18.210502.28842@midway.uchicago.edu> +// From: mps@dent.uchicago.edu (Michael Spertus) +// Subject: g++ 2.5.4 bug : operator= +// Date: Thu, 18 Nov 1993 21:05:02 GMT + +class T { +}; + +class EP { +public: + void operator=(T *); +}; + + +void EP::operator=(T *) { } + +int main() +{ + EP ep1, ep2; + ep1 = ep2; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators14.C b/gcc/testsuite/g++.old-deja/g++.law/operators14.C new file mode 100644 index 000000000..d0ec8a4a5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators14.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// GROUPS passed operators +void foo (int * a, int * b, int * c) {} + +int main() { + int a,b,c; + foo (&a, &b, &c); + (a = b) = c; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators15.C b/gcc/testsuite/g++.old-deja/g++.law/operators15.C new file mode 100644 index 000000000..ea0e68857 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators15.C @@ -0,0 +1,28 @@ +// { dg-do run } +// GROUPS passed operators +// opr-del file +// Message-Id: <199301272137.AA25213@world.std.com> +// From: kol@world.std.com (Nikolay Yatsenko) +// Subject: bug report +// Date: Wed, 27 Jan 1993 16:37:30 -0500 + +extern "C" int printf(const char* ...); + +int delete_counter = -1; + +struct T{ + void operator delete (void * p) {delete_counter ++; ::operator delete(p);} +}; + +int main(void) +{ + T * ps1 = new T; + + ::delete ps1; // Wrong T::operator delete() is called here + + if (delete_counter != -1) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators16.C b/gcc/testsuite/g++.old-deja/g++.law/operators16.C new file mode 100644 index 000000000..820e47083 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators16.C @@ -0,0 +1,30 @@ +// { dg-do run } +// GROUPS passed operators +// copy file +// From: gfm@mencon.mencon.oz.au (Graham Menhennitt) +// Date: Thu, 29 Apr 93 20:53:07 EST +// Subject: 4 bugs in g++ 2.3.3 +// Message-ID: <9304291053.AA00090@mencon> + +#include + +int pass = 0; +struct A { + A(void) {} + A(const A& a) { ; } + A& operator = (const A& a) { pass = 1; return *this; } +}; + +struct B { + B(const A& aa) { B::a = aa; } + A a; +}; + +int main(void) +{ + B b = A(); + if (pass) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators17.C b/gcc/testsuite/g++.old-deja/g++.law/operators17.C new file mode 100644 index 000000000..ea2e9beb1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators17.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// { dg-options "-Wall -pedantic-errors" } +// GROUPS passed operators +// copy file +// From: gfm@mencon.mencon.oz.au (Graham Menhennitt) +// Date: Thu, 29 Apr 93 20:53:07 EST +// Subject: 4 bugs in g++ 2.3.3 +// Message-ID: <9304291053.AA00090@mencon> + +struct A { + A& operator = (const A& a) {}// { dg-warning "" } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators18.C b/gcc/testsuite/g++.old-deja/g++.law/operators18.C new file mode 100644 index 000000000..d362a4c9f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators18.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-ampr file +// From: mecklen@oops.cs.utah.edu (Robert Mecklenburg) +// Date: Thu, 8 Oct 92 16:33:08 -0600 +// Subject: Type conversion and overloading bugs in 2.2.2 +// Message-ID: <9210082233.AA28203@hellgate.utah.edu> + + enum E { a, b, c }; + struct Estr { + E value; + Estr() {} + Estr( int i ) : value( (E)i ) {} + operator E() { return value; } + }; + extern Estr baz(); + int bazz() { return baz() & 2; } diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators19.C b/gcc/testsuite/g++.old-deja/g++.law/operators19.C new file mode 100644 index 000000000..c9707beb1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators19.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-ampr file +// From: Jarkko Sonninen +// Date: Thu, 7 Oct 1993 08:25:26 +0200 +// Subject: type of base class member +// Message-ID: <199310070625.AA18653@kaisa.it.lut.fi> + +class A { + public: + int j; +}; + +class B: public A { + public: + B () { + !(A::j); + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators2.C b/gcc/testsuite/g++.old-deja/g++.law/operators2.C new file mode 100644 index 000000000..64f6bfadb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators2.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-conv file +// Message-Id: <199301260142.AA13995@world.std.com> +// From: gparker@world.std.com (Glenn P Parker) +// Subject: gcc bug +// Date: Mon, 25 Jan 1993 20:42:35 -0500 + +int main(void) +{ + int i = int(); // g++ 2.3.3 cannot compile it. + + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators21.C b/gcc/testsuite/g++.old-deja/g++.law/operators21.C new file mode 100644 index 000000000..e6d77c329 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators21.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed operators + +struct A { + int x; +}; + +int operator()(A x,float y) {// { dg-error "" } .* + return 1; +} + +int main() { + A x; + x(1.0); // { dg-error "" } no match +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators22.C b/gcc/testsuite/g++.old-deja/g++.law/operators22.C new file mode 100644 index 000000000..2d18e0803 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators22.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed operators +template +class t { +public: + t() {} +}; + +class m { + t c; +public: + m() : c() {} +}; + +m *p() {return new m;} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators23.C b/gcc/testsuite/g++.old-deja/g++.law/operators23.C new file mode 100644 index 000000000..38ef1b13f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators23.C @@ -0,0 +1,36 @@ +// { dg-do run } +// GROUPS passed operators +// opr-new file +// From: (The Crossjammer) +// Date: Mon, 23 Nov 92 23:35:26 PST +// Subject: g++-2.3.1 : Incorrectly calls overloaded operator new +// Message-ID: <9211240735.AA06872@cork.CS.Berkeley.EDU> + + +#include +#include + +class blah { + int j; + public: + blah(); + void *operator new(size_t size) throw(); +}; + +inline blah::blah() : j(0) { + +} + + +void *blah::operator new(size_t size) throw(){ + printf ("FAIL\n"); + exit (1); + return NULL; +} + +int main(int arg, char** argv) { + blah* blahPtr; + + blahPtr = new blah[100]; + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators24.C b/gcc/testsuite/g++.old-deja/g++.law/operators24.C new file mode 100644 index 000000000..5d182aade --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators24.C @@ -0,0 +1,14 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-new file +// From: rwave!myersn%rwave.roguewave@cs.orst.edu (Nathan Myers) +// Date: Wed, 16 Dec 92 11:55 PST +// Subject: 2.3.2: friend decl breaks member op new +// Message-ID: + +#include +struct Link { + void* operator new(size_t, int); + friend void* __builtin_new(size_t); // This declaration triggers the bug +}; +void f() { new(2) Link; } diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators25.C b/gcc/testsuite/g++.old-deja/g++.law/operators25.C new file mode 100644 index 000000000..e37306492 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators25.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-new file +// From: gparker@world.std.com (Glenn P Parker) +// Date: Mon, 25 Jan 1993 20:43:43 -0500 +// Subject: gcc bug +// Message-ID: <199301260143.AA14133@world.std.com> + +typedef int (**PPF)(int); + +int main(void) +{ + PPF pf2 = new (int (*) (int)); // internal compiler error on this line. + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators27.C b/gcc/testsuite/g++.old-deja/g++.law/operators27.C new file mode 100644 index 000000000..5fb3a74cb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators27.C @@ -0,0 +1,34 @@ +// { dg-do run } +// GROUPS passed operators +// opr-new file +// From: David Binderman 3841 +// Date: Mon, 21 Jun 93 11:42:11 +0200 +// Subject: G++ 2.4.3 and operator new +// Message-ID: <9306210942.AA10276@slsvitt.us-es.sel.de> + +int FLAG=0; + +#include + +extern "C" int printf( const char *, ...); + +void * operator new(std::size_t, const std::nothrow_t&) throw() { FLAG=1; return 0; } + +class K { +private: + int i; +public: + K( int j) { + i = j; + } +}; + +int main(void) +{ + K * pK = new (std::nothrow) K( 10); + if ( FLAG != 1 ) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators28.C b/gcc/testsuite/g++.old-deja/g++.law/operators28.C new file mode 100644 index 000000000..7d166474a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators28.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// GROUPS passed operators +#include +#include + +class new_test +{ + int type; +public: + void* operator new(size_t sz, int count, int type); +}; + +void* new_test::operator new(size_t sz, int count, int type) +{ + void *p; + + printf("%d %d %d\n", sz, count, type); + + p = new char[sz * count]; + ((new_test *)p)->type = type; + return p; +} + +int main() +{ + new_test *test; + int count = 13; + + test = new(count, 1) new_test; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators29.C b/gcc/testsuite/g++.old-deja/g++.law/operators29.C new file mode 100644 index 000000000..387f8cbd7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators29.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// GROUPS passed operators +// (Message bugs/opr-del:4) +// From: jamshid@ses.com (Jamshid Afshar) +// Date: Fri, 25 Feb 94 18:44:01 CST +// Subject: Re: delete on "smart pointers" +// Message-ID: <9402262328.AA16321@pancake> +// +// Who was apparently replying to kuhlins@hawk.wifo.uni-mannheim.de + + +template class Ptr { +public: + Ptr(T*); + operator T*(); +}; + +int main() { + Ptr ip = new int(2); + delete ip; + operator delete(ip); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators3.C b/gcc/testsuite/g++.old-deja/g++.law/operators3.C new file mode 100644 index 000000000..38c75b663 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators3.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-pl file +// Message-Id: <9212010409.AA24967@zeus.research.otc.com.au> +// From: grahamd@zeus.research.otca.oz.au (Graham Dumpleton) +// Subject: Failure to use conversion operator. +// Date: Tue, 1 Dec 92 15:11:18 EST + +class BUG1 +{ + public: + + operator const char*() const { return myData; } + const char* myData; +}; + +void bug1() +{ + BUG1 bug1; + bug1.myData = "0123456789"; + const char* s = bug1 + 1; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators30.C b/gcc/testsuite/g++.old-deja/g++.law/operators30.C new file mode 100644 index 000000000..cd57188db --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators30.C @@ -0,0 +1,26 @@ +// { dg-do run } +// GROUPS passed operators +// opr-mm file +// Date: Thu, 2 Jun 94 10:00:29 +0200 +// From: chatty@cenatls.cena.dgac.fr (Stephane Chatty) +// Message-Id: <9406020800.AA14201@geant.cenatls.cena.dgac.fr> +// Subject: result of operator -- with g++-2.5.8 + +#include + +void nop() +{ +} + +int main () +{ + int a = 2; + + if (----a == 0) + nop (); + + if (a == 0) + printf("PASS\n"); + else + { printf("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators31.C b/gcc/testsuite/g++.old-deja/g++.law/operators31.C new file mode 100644 index 000000000..8ad9c472b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators31.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-del file +// From: Eberhard Mattes +// Date: Thu, 4 Aug 94 08:19:20 +0200 +// Subject: delete [] A::s +// Message-ID: <9408040619.AA27602@azu.informatik.uni-stuttgart.de> + +class A +{ + char *s; +public: + void f (); +}; + +void A::f () +{ + delete [] A::s; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C new file mode 100644 index 000000000..20d148dd5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C @@ -0,0 +1,57 @@ +// { dg-do assemble } +// GROUPS passed operators +#include + +// +// ffrees space allocated for N-D array +// + +template +void ffree(long rows, T** array) // { dg-message "note" } +{ +for( long i = 0; i < rows; i++ ) + delete [] array[i]; // delete row +delete [] array; // delete outer array +} + +template +T* allocate1d(long size, T*& array) +{ +return array = new T[size]; +} + +template +T** allocate2d(long d1, long d2, T**& array) // { dg-message "note" } +{ +if( allocate1d(d1, array) != 0 ) + { + for( long i = 0; i < d1; i++ ) + { + if( allocate1d(d2, array[i]) == 0 ) + { + ffree(i,array); + return array; + } + } + } +return array; +} + +int main() +{ +long d1 = 3, d2 = 4; +class foo +{ +public: +foo() {std::cout << "foo created" << std::endl; } + +~foo() {std::cout << "foo deleted" << std::endl; } +}; + +foo **f2; +allocate2d(d1, d2, f2);// { dg-error "" } type.*// ERROR - trying to.* +// { dg-message "candidate" "candidate note" { target *-*-* } 52 } +ffree(d1, f2);// { dg-error "" } type.*// ERROR - trying to.* +// { dg-message "candidate" "candidate note" { target *-*-* } 54 } + +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators33.C b/gcc/testsuite/g++.old-deja/g++.law/operators33.C new file mode 100644 index 000000000..87e50941d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators33.C @@ -0,0 +1,28 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-new file +// From: flisakow@cae.wisc.edu +// Date: Thu, 1 Sep 94 18:21:09 CDT +// Subject: g++ bug? +// Message-ID: <9409012321.AA05346@hprisc-19.cae.wisc.edu> + +#include + + +struct fcell { + FILE *fd; + struct fcell *next; +}; + + +class FStack { +public: + struct fcell *top; + FStack() { top = NULL ; } + inline void push(FILE * fd1, int line_num, char *fname = NULL) { + struct fcell *tmp = new struct fcell; + tmp->fd = fd1; + tmp->next = top; + top = tmp ; + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators34.C b/gcc/testsuite/g++.old-deja/g++.law/operators34.C new file mode 100644 index 000000000..069f81504 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators34.C @@ -0,0 +1,12 @@ +// { dg-do assemble } +// GROUPS passed operators +class A { + public: + A() { + } +}; + +static class A *A_new_() { + return new class A; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C new file mode 100644 index 000000000..fc623b4fc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C @@ -0,0 +1,32 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-del file +// From: rollins@bart.ee.queensu.ca (Mark Rollins) +// Date: Thu, 3 Sep 1992 22:01:03 -0400 Fri, 4 Sep 1992 02:00:25 GMT +// Subject: delete [size] pointer; Problem +// Message-ID: <92Sep3.220137edt.30@jarvis.csri.toronto.edu> + +#include +typedef std::complex Complex; +#include + +class Vector { + int size; + Complex *v; + public: + Vector(int s=1) { size = s; v = new Complex[size];} + ~Vector() { delete [size] v;}// { dg-error "" } warning +}; + +void foo(int s) +{ + Vector junk(s); +} + +int main() +{ + Vector* test; + for (int i=0;i<40;i++) // was 100000 + foo(1000); + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators6.C b/gcc/testsuite/g++.old-deja/g++.law/operators6.C new file mode 100644 index 000000000..f15c073ff --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators6.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-as file +// From: Klaus Ahrens +// Date: Fri, 26 Mar 93 12:50:37 mez +// Subject: no default assignment +// Message-ID: <199303261149.TA23114@mail.Germany.EU.net> + +class A { +public: + A(int){} + A& operator=(const A&){return *this;} +}; + +class B: public A { +public: + B(int i): A(i) {} +}; + +int main() +{ + B b=1; + b=1; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators8.C b/gcc/testsuite/g++.old-deja/g++.law/operators8.C new file mode 100644 index 000000000..16c91cdef --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators8.C @@ -0,0 +1,52 @@ +// { dg-do run } +// GROUPS passed operators +#include + +class shape { + public: + virtual int vDisplay(void) const = 0; + protected: + int X; + int Y; +}; + +class square :public shape { + public: + square(int x, int y, int width_) { + X = x; + Y = y; + width = width_; + } + int vDisplay(void) const { + printf ("PASS\n"); + return 0; + } + protected: + int width; +}; + + +class triangle :public shape { + public: + triangle(int x, int y, int width_, int height_) { + X = x; + Y = y; + width = width_; + height = height_; + } + int vDisplay(void) const { + printf ("FAIL\n"); + return 1; + } + protected: + int width; + int height; +}; + +int main() { + shape* s1 = new square(4,4,5); + shape* s2 = new triangle(6,6,2,3); + *s1 = *s2; + return s1->vDisplay(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators9.C b/gcc/testsuite/g++.old-deja/g++.law/operators9.C new file mode 100644 index 000000000..3c50cbdd0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/operators9.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed operators +// opr-eq file +// Message-Id: <9301141514.AA05925@mi.el.utwente.nl> +// From: klamer@mi.el.utwente.nl (Klamer Schutte) +// Subject: 2.3.3: failed to detect error +// Date: Thu, 14 Jan 93 16:14:21 +0100 + +class B +{ +public: + operator=(B &); // { dg-error "no type" } + // { dg-message "B::operator=|no known conversion" "note" { target *-*-* } 12 } +}; + +void +test(B &b1, const B &b2) +{ + b1 = b2;// { dg-error "match" } + // { dg-message "candidate" "candidate note" { target *-*-* } 19 } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing1.C b/gcc/testsuite/g++.old-deja/g++.law/parsing1.C new file mode 100644 index 000000000..3930ae809 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing1.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: hendrik%vedge.UUCP@iro.umontreal.ca +// Date: Wed, 23 Sep 92 17:10:28 -0400 +// Subject: parenthesized method +// Message-ID: <9209232110.AA02533@.> + + +class goo{ +public: + void noo_bloo(); +}; + +void choo(goo* too) +{ (too->noo_bloo)(); +} + +void choo_too(goo* too) +{ too->noo_bloo(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing10.C b/gcc/testsuite/g++.old-deja/g++.law/parsing10.C new file mode 100644 index 000000000..8dcb74fa6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing10.C @@ -0,0 +1,32 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: Eirik Fuller +// Date: Wed, 15 Dec 1993 17:06:11 -0500 +// Subject: parse error +// Message-ID: <199312152206.AA06584@tonttu.TC.Cornell.EDU> + + +class s; + +template +class t +{ +public: + void f(T *t); +}; + +class l +{ +public: + void s() {} +}; + +extern t g; + +class p +{ +public: + void *h; + s *a() {return (s *) h;} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing2.C b/gcc/testsuite/g++.old-deja/g++.law/parsing2.C new file mode 100644 index 000000000..73be6bbc2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing2.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: jonathan@Pescadero.Stanford.EDU +// Date: Tue, 15 Sep 92 14:15:29 PDT +// Subject: Function taking as argument a pointer to a pointer to a function +// that returns int causes coredump in cc1plus +// Message-ID: <9209152115.AA07423@Pescadero.Stanford.EDU> + + unsigned char FindMdc ( int (**)() ); + unsigned char FindMdc2 ( int (**funcname)() ); diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing3.C b/gcc/testsuite/g++.old-deja/g++.law/parsing3.C new file mode 100644 index 000000000..a9e6e33dd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing3.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: tll@cco.caltech.edu (Tal Lewis Lancaster) +// Date: 18 Mar 1993 17:09:43 GMT +// Subject: Re: unexpected difference between gcc and g++ (both 2.3.3) +// Message-ID: <1oaacnINNt20@gap.caltech.edu> + +/* Notice that this case parses fine */ +int (* volatile y)[10]; + +void foo2() { + /* The parser can't handle it now */ + int (* volatile x)[10]; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing4.C b/gcc/testsuite/g++.old-deja/g++.law/parsing4.C new file mode 100644 index 000000000..6eced1b13 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing4.C @@ -0,0 +1,10 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: Glenn Engel +// Date: Fri, 29 Jan 93 18:42:03 PST +// Subject: Parse Error +// Message-ID: <9301300242.AA15550@hplslk.lsid.hp.com> + +int test1(void (**roc)(int,int)); // parse error +int test2(int id,void (**orc)(int,int)); // works diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing5.C b/gcc/testsuite/g++.old-deja/g++.law/parsing5.C new file mode 100644 index 000000000..370c1bc18 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing5.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// GROUPS passed parsing +// From: Teemu Torma +// Date: Mon, 15 Jun 92 18:42:25 +0300 +// Subject: G++ 2.2.2: Strange parse error +// Message-ID: <"relay.fren.501:15.05.92.15.42.30"@frend.fi> + +long (*foo1 ()) (); // This is ok. + +typedef long INT; +INT (*foo2 ()) (); // This is not, g++ says "parse error before `('" diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing6.C b/gcc/testsuite/g++.old-deja/g++.law/parsing6.C new file mode 100644 index 000000000..f95c6192a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing6.C @@ -0,0 +1,15 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: "James S. Vera" +// Date: Thu, 01 Jul 1993 16:36:32 -0700 +// Subject: Mildly complicated type not understood, 2.4.5 +// Message-ID: <9307012336.AA13841@fanaraaken.Stanford.EDU> + +typedef int (*cow[3])(...); + +int main() { + cow fs; + int (*pig[3])(...); // line 5 + +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing7.C b/gcc/testsuite/g++.old-deja/g++.law/parsing7.C new file mode 100644 index 000000000..d39400aed --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing7.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: szahn%Robinie@goesser.sie.siemens.co.at (Hr. Zahn) +// Date: Mon, 5 Jul 93 10:45:51 +0200 +// Subject: Bug report g++ 2.4.5, unexpected syntax errors +// Message-ID: <9307050845.AA00499@ets5.uebemc.siemens.de> + +int f1( + int (**a1)() + ); + +int f2( + int (**a1)() + ); + + +int f3( + int (**a1)( int a, int b ) + ); + +int f4( + int (**a1)( int a, int b ) + ); diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing8.C b/gcc/testsuite/g++.old-deja/g++.law/parsing8.C new file mode 100644 index 000000000..797982cb9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing8.C @@ -0,0 +1,31 @@ +// { dg-do assemble } +// GROUPS passed parsing +// parsing folder +// From: nag@soft.flab.fujitsu.co.jp +// Date: Thu, 08 Jul 1993 10:54:59 +0900 +// Subject: g++ cannot understand `void (**f)()' +// Message-ID: <9307080155.AA00496@kumade.soft.flab.fujitsu.co.jp> + + void + func() { + int ( * * i )[ 2 ]; + } + +// Looks like this is probably the same problem +// parsing folder +// From: nag@soft.flab.fujitsu.co.jp +// Date: Thu, 08 Jul 1993 10:54:59 +0900 +// Subject: g++ cannot understand `void (**f)()' +// Message-ID: <9307080155.AA00496@kumade.soft.flab.fujitsu.co.jp> +int main() +{ + void (**f)(); +} + + +// Same as +// From: Chris Dodd +// Date: Fri, 16 Jul 93 17:05:04 -0700 +// Subject: bug in declaration parsing in g++ 2.4.5 +// Message-ID: <9307170005.AA03857@pekoe.csl.sri.com> + diff --git a/gcc/testsuite/g++.old-deja/g++.law/parsing9.C b/gcc/testsuite/g++.old-deja/g++.law/parsing9.C new file mode 100644 index 000000000..b4de05278 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/parsing9.C @@ -0,0 +1,32 @@ +// { dg-do assemble } +// GROUPS passed parsing +// From: Jason Merrill +// Date: Fri, 13 Aug 93 12:49:11 PDT +// Subject: 2.4.5 won't compile array of pointers to functions returning T +// Message-ID: <9308131949.AA26348@cygnus.com> +// From: "Robert M. Keller" +// Subject: g++ bug +// Date: Fri, 13 Aug 93 10:09:27 PDT + +/* Testing declaration of "array of pointers to functions returning T" */ + +typedef int T; + +T foo() +{ return 10; } + +T bar() +{ return 20; } + +T baz() +{ return 30; } + +int main() +{ +T (*apfrt[10])(); + +apfrt[0] = foo; +apfrt[1] = bar; +apfrt[2] = baz; + +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/patches1.C b/gcc/testsuite/g++.old-deja/g++.law/patches1.C new file mode 100644 index 000000000..f32396373 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/patches1.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed patches +// patches file +// From: david.binderman@pmsr.philips.co.uk +// Date: Wed, 6 Oct 93 17:05:54 BST +// Subject: Reno 1.2 bug fix +// Message-ID: <9310061605.AA04160@pmsr.philips.co.uk> + +int type(float) { return 1; } +int type(double) { return 2; } +int type(long double) { return 3; } + +extern "C" int printf( const char *, ...); + +int main() +{ + int i = 0; + if (type(0.0) != 2) + ++i; + if (i > 0) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/pic1.C b/gcc/testsuite/g++.old-deja/g++.law/pic1.C new file mode 100644 index 000000000..561ea2460 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/pic1.C @@ -0,0 +1,9 @@ +// { dg-do assemble } +// GROUPS passed operators +// pic file +// Message-Id: <199406132030.NAA23508@dewitt.eecs.berkeley.edu> +// Subject: gcc-2.5.8 -fpic fails to compile extern const char static initializer +// Date: Mon, 13 Jun 1994 13:30:14 -0700 +// From: Christopher Hylands + +extern const char SDFdomainName[] = "SDF"; diff --git a/gcc/testsuite/g++.old-deja/g++.law/pr25000.C b/gcc/testsuite/g++.old-deja/g++.law/pr25000.C new file mode 100644 index 000000000..45d468020 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/pr25000.C @@ -0,0 +1,24 @@ +// { dg-do compile } +// { dg-options "-O2" } +int * f(void); +void g(int*); +bool h(void); +void Find( ) +{ + int * pRes = f(); + if( !pRes ) { + if( h()){ + if( h()){ + try + { + pRes = new int(); + f(); + }catch(int& e1 ){} + } + if( !pRes ) + f(); + } + g(pRes); + } +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/profile1.C b/gcc/testsuite/g++.old-deja/g++.law/profile1.C new file mode 100644 index 000000000..ecd3b834c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/profile1.C @@ -0,0 +1,12 @@ +// { dg-do run } +// { dg-require-profiling "-pg" } +// { dg-options "-pg" } +// { dg-options "-pg -static" { target hppa*-*-hpux* } } +// GROUPS passed profiling +#include +main() +{ + printf ("PASS\n"); +} + +/* { dg-final { cleanup-profile-file } } */ diff --git a/gcc/testsuite/g++.old-deja/g++.law/refs1.C b/gcc/testsuite/g++.old-deja/g++.law/refs1.C new file mode 100644 index 000000000..d6dd21c27 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/refs1.C @@ -0,0 +1,43 @@ +// { dg-do run } +// GROUPS passed references +// (Message bugs/refs:1) +// From: tal@vlsi.cs.caltech.edu +// Date: Fri, 25 Feb 94 23:55:50 -0800 +// Subject: g++-2.5.8 produces incorrect code for references +// Message-ID: <9402260755.AA27693@vlsi.cs.caltech.edu> + +#include + +class C { +private: + const char** list; +public: + C(const char** ); + void count (int&); +}; + +C::C (const char** l) { + list = l; +} + +void C::count (int& total) { + if (*list == NULL) + return; + else { + list++; + count (++total); // THIS IS WHERE THE TROUBLE STARTS + } +} + +const char * foo[] = { + "one", "two", "three", NULL}; + +int main() { + C c(foo); + int i = 0; + c.count(i); + if (i == 3) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/refs2.C b/gcc/testsuite/g++.old-deja/g++.law/refs2.C new file mode 100644 index 000000000..74bc97225 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/refs2.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// GROUPS passed references +int func(int& i) +{ + static int& v = i; + return v; +} + +int main() +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/refs3.C b/gcc/testsuite/g++.old-deja/g++.law/refs3.C new file mode 100644 index 000000000..7b9a85bac --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/refs3.C @@ -0,0 +1,6 @@ +// { dg-do assemble } +// GROUPS passed references +const int& min(const int& n, const int& m) +{ + return n < m ? n : m; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/refs4.C b/gcc/testsuite/g++.old-deja/g++.law/refs4.C new file mode 100644 index 000000000..b87fa69e3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/refs4.C @@ -0,0 +1,25 @@ +// { dg-do run } +// GROUPS passed references + +// execution test + +int r; + +const int& min(const int& tX, const int& tY) +{ + return tX < tY ? tX : tY; +} + +void foo(const int m, const int n) +{ + if (m == 1 && n == 100) + /* OK */; + else + r = 1; +} + +int main() +{ + foo(min(2, 1), min(100, 200)); + return r; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/scope1.C b/gcc/testsuite/g++.old-deja/g++.law/scope1.C new file mode 100644 index 000000000..062fc4010 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/scope1.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed scoping +// scoping file +// From: kol@world.std.com (Nikolay Yatsenko) +// Date: Fri, 16 Jul 1993 18:48:32 -0400 +// Subject: g++ gives wrong error for local structure +// Message-ID: <199307162248.AA05360@world.std.com> + +int main(void) +{ + struct A{ + public: int i; + void set (int i) + {A::i = i;} // g++ gives wrong error + }; + + A a; + a.set(17); + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/scope2.C b/gcc/testsuite/g++.old-deja/g++.law/scope2.C new file mode 100644 index 000000000..13c02c2ae --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/scope2.C @@ -0,0 +1,45 @@ +// { dg-do run } +// GROUPS passed scoping +// scoping file +// From: svkakkad@cs.utexas.edu (Sheetal V. Kakkad) +// Date: Tue, 5 Oct 93 12:38:49 -0500 +// Subject: G++ 2.4.5 - global delete operator not called when using "::delete" +// Message-ID: <9310051738.AA14586@boogie.cs.utexas.edu> + +#include +#include +#include + +class foo +{ + public: + foo () { ; } + ~foo () { ; } + void *operator new (size_t); + void operator delete (void *); +}; + +void *foo::operator new (size_t size) +{ + return malloc (size); +} + +int overloaded_delete = 0; + +void foo::operator delete (void *data) +{ + free ((char *) data); + overloaded_delete++; +} + +int main () +{ + foo *f = new foo; + foo *ff = ::new foo; + ::delete ff; // should call the default delete operator + delete f; + if (overloaded_delete == 1) + printf ("PASS\n"); + else + { printf ("FAIL\n"); return 1; } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/scope3.C b/gcc/testsuite/g++.old-deja/g++.law/scope3.C new file mode 100644 index 000000000..5988d19f8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/scope3.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed scoping +// local-class file +// From: dcb@us-es.sel.de +// Date: Fri, 27 Nov 92 15:34:28 +0100 +// Subject: GNU G++ 2.3.1 bug report +// Message-ID: <9211271434.AA15612@us-es.sel.de> + + +void f() +{ + { + struct A { + A() {} + } a; + }; + { + struct A { + A() {} + } a ; + }; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/scope4.C b/gcc/testsuite/g++.old-deja/g++.law/scope4.C new file mode 100644 index 000000000..dfa73d312 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/scope4.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed scoping +// local-class file +// From: daniels@sugar.neosoft.com (Brad Daniels) +// Date: Thu, 5 Aug 93 15:36:36 CDT +// Subject: Bug in g++ 2.4.5: Can't touch nested class identifier inside its members +// Message-ID: <9308051536.AA06115@NeoSoft.Com> + +void f() { + class foo { + int x; + public: + foo() : x(1) {} + int bar() { foo p; return p.x; } + }; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/scope5.C b/gcc/testsuite/g++.old-deja/g++.law/scope5.C new file mode 100644 index 000000000..34446d88c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/scope5.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// GROUPS passed scoping +// local-class file +// From: schlaege@methusalix.ert.rwth-aachen.de (Chris Schlaeger H Zivojnovic) +// Date: Tue, 10 Aug 93 16:50:33 +0200 +// Subject: Bug report +// Message-ID: <9308101450.AA28016@methusalix.ert.rwth-aachen.de> + +int main() +{ + class foo + { + int i; + } ; + class bar + { + public: + bar() { y = 0; } + void f() { foo x; } + private: + int y; + } ; + + bar c; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/shadow1.C b/gcc/testsuite/g++.old-deja/g++.law/shadow1.C new file mode 100644 index 000000000..d13dfe83e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/shadow1.C @@ -0,0 +1,28 @@ +// { dg-do assemble } +// { dg-options "-Wshadow" } +// GROUPS passed shadow-warnings +// shadow file +// Message-Id: <9211061827.AA03517@harvey> +// From: Jeff Gehlhaar +// Subject: GCC Bug.. +// Date: Fri, 6 Nov 1992 10:27:10 -0700 + +class Klasse +{ +public: + Klasse(void); // constructor + int Shadow(void); // member function +private: + long value; +}; + +Klasse::Klasse(void) +{ + value = 0; +} + +static inline unsigned char +Function(int Shadow) +{ + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/shadow2.C b/gcc/testsuite/g++.old-deja/g++.law/shadow2.C new file mode 100644 index 000000000..46f9dfcc3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/shadow2.C @@ -0,0 +1,28 @@ +// { dg-do assemble } +// { dg-options "-Wshadow" } +// GROUPS passed shadow-warnings +// (Message bugs/shadow:2) +// From: michael@utex.rni.sub.org (Michael Utech) +// Date: Sat, 22 Jan 1994 04:28:00 +0100 +// Subject: very minor problem/bug in gcc-2.5.4, -Wshadow +// Message-ID: + +class X +{ + int count; +public: + X() {} // necessary to produce the `count' warning +}; + +template +class Y +{ + T t; +public: + int f (int count) { return (count); } +}; + +main () +{ + Y y; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/static-mem2.C b/gcc/testsuite/g++.old-deja/g++.law/static-mem2.C new file mode 100644 index 000000000..68623be87 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/static-mem2.C @@ -0,0 +1,27 @@ +// { dg-do assemble } +// GROUPS passed static-mem + +class desc; + +class a_desc { + public: + + static desc the_desc; + + virtual desc *get_desc(); +}; + +class desc : public a_desc { + public: + + static desc the_desc; + + desc(int); + + desc *get_desc(); +}; + + +desc desc::the_desc(1); + +desc a_desc::the_desc(0); diff --git a/gcc/testsuite/g++.old-deja/g++.law/static-mem3.C b/gcc/testsuite/g++.old-deja/g++.law/static-mem3.C new file mode 100644 index 000000000..1c7900b58 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/static-mem3.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// GROUPS passed static-mem +// static-mem file +// Message-Id: <9406021639.AA00789@oz.NeXT.COM> +// From: Sumana Srinivasan +// Date: Thu, 2 Jun 94 09:39:09 -0700 +// Subject: static members function pointers + +class CRTFooBar; + +class CRTFoo { +public: + static const CRTFooBar & defaultFooBar( ); + + CRTFoo( const CRTFoo & ); + CRTFoo( ); + CRTFoo( const char *, + const CRTFooBar &tp = CRTFoo::defaultFooBar(), + int = 0 ); + CRTFoo &setFoo( double, + const CRTFooBar & = CRTFoo::defaultFooBar() ); + +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/static-mem4.C b/gcc/testsuite/g++.old-deja/g++.law/static-mem4.C new file mode 100644 index 000000000..4e61c6933 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/static-mem4.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed static-mem +struct test { + void test_member() { + static test& ds = *this; // FIX: static test* ds = this; + } +}; + + +int main() +{ + test t; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/static-mem5.C b/gcc/testsuite/g++.old-deja/g++.law/static-mem5.C new file mode 100644 index 000000000..bbc79afae --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/static-mem5.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// { dg-options "-w -fpermissive" } +// GROUPS passed static-mem +// static-mem file +// From: bunch@tazboy.jpl.nasa.gov (Walt Bunch) +// Date: Thu, 23 Jun 94 14:58:35 UNI +// Subject: bug report +// Message-ID: <9406232258.AA03897@tazboy.JPL.NASA.GOV> + + +class A +{ +public: + static void F (int i) {} + static void A::G (int i) {} +}; + +main () +{ + A::F (17); + A::G (42); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/template1.C b/gcc/testsuite/g++.old-deja/g++.law/template1.C new file mode 100644 index 000000000..9b5f56f07 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/template1.C @@ -0,0 +1,30 @@ +// { dg-do assemble } +// GROUPS passed templates + +class String { + char s[100]; +}; + +template +class Art { +public: + Element *data; + Art() { data=new Element[100]; } +}; + +template +class Assoc { +public: + struct KeyValue { + Key key; + Value value; + int filled; + }; + + Art data; + int fill; +}; + +int main() { + Assoc table; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/template3.C b/gcc/testsuite/g++.old-deja/g++.law/template3.C new file mode 100644 index 000000000..271dab0f3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/template3.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// GROUPS passed templates +template< class R, class T1 = R, class T2 = T1 > +struct plus + { + R operator()( const T1& x, const T2& y ) const + { + return x + y; + } + }; + +int +main() + { + plus< int > p; + return 0; + } diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps1.C b/gcc/testsuite/g++.old-deja/g++.law/temps1.C new file mode 100644 index 000000000..bd344b419 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/temps1.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed temps +// temps file +// Date: Mon, 07 Sep 1992 13:12:28 EDT +// From: richard@ttt.kth.se +// { dg-options "-fpermissive" } +struct foo +{ + char *s; + foo(char *x) { s=x; } +}; + +struct cookie +{ + foo * v; + cookie ( foo * x) { v=x; } +}; + +cookie cat(&foo("apabepa"));// { dg-warning "deprecated conversion" "dep" } +// { dg-warning "taking address of temporary" "add" { target *-*-* } 19 } diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps2.C b/gcc/testsuite/g++.old-deja/g++.law/temps2.C new file mode 100644 index 000000000..b494efd6e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/temps2.C @@ -0,0 +1,55 @@ +// { dg-do run } +// GROUPS passed temps +// temps file +// Message-Id: <9212181914.AA05066@sparc1.cnm.us.es> +// From: juando@cnm.us.es (Juan Domingo Martin Gomez) +// Subject: Temporaries destroyed too soon +// Date: Fri, 18 Dec 92 20:14:45 +0100 + +#include + +int status = 0; +int fail = 0; + +class Foo +{ +public: + Foo(); + ~Foo(); + + Foo &method(); +}; + +Foo f1() +{ + return Foo(); +} + +Foo::Foo() +{ +} + +Foo::~Foo() +{ + if (status == 2) + fail = 0; + else + fail = 1; +} + +Foo &Foo::method() +{ + status++; + return *this; +} + +int main() +{ + // f1() returns a temporary object. The member function + // method() returns a reference to the same object. + f1().method().method(); + if (fail) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps3.C b/gcc/testsuite/g++.old-deja/g++.law/temps3.C new file mode 100644 index 000000000..401b00661 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/temps3.C @@ -0,0 +1,29 @@ +// { dg-do run } +// GROUPS passed temps +// temps file +// Message-Id: <9308231535.AA19432@geant.cenatls.cena.dgac.fr> +// From: chatty@geant.cenatls.cena.dgac.fr (Stephane CHATTY) +// Subject: g++ 2.4.5 does not destroy temporaries +// Date: Mon, 23 Aug 93 17:35:34 +0200 + +#include + +class A { +public: + int a; + A (int i) : a (i) { ;} + A (const A& aa) : a (aa.a) { ;} + ~A () { printf ("PASS\n");; } +}; + +A +foo () +{ + return A (10); +} + +int main () +{ + int x = foo ().a; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps4.C b/gcc/testsuite/g++.old-deja/g++.law/temps4.C new file mode 100644 index 000000000..3f8c9ed2c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/temps4.C @@ -0,0 +1,40 @@ +// { dg-do run } +// { dg-options "-felide-constructors" } +// GROUPS passed temps +// temps file +// Message-Id: <9311102043.AA22871@ses.com> +// From: jamshid@ses.com (Jamshid Afshar) +// Subject: elide-constructors (aka return value optimization) +// Date: Wed, 10 Nov 93 14:43:54 CST + +#include +#include + +class X { + int i; + public: + X(); + X(const X&); + X(int); + ~X(); +}; + +int did_it = 0; + +X::X() { ; } +X::X(const X&) { did_it = 1; } +X::X(int) { ; } +X::~X() { ; } + +X foo() { + X x(1); + return x; +} + +main() { + X x = foo(); + if (did_it) + abort (); + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps5.C b/gcc/testsuite/g++.old-deja/g++.law/temps5.C new file mode 100644 index 000000000..e33962e1c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/temps5.C @@ -0,0 +1,42 @@ +// { dg-do run } +// GROUPS passed temps +// temps file +// Message-Id: <9311171029.AA00592@mencon> +// From: gfm@mencon.mencon.oz.au (Graham Menhennitt) +// Subject: gcc 2.5.3 - bug deleting object that is still referred to +// Date: Wed, 17 Nov 93 21:29:23 EST + +#include + +class C { +public: + C(int i) : val(i) { ; } + C(const C& c) : val(c.val) { ; } + ~C(void) { val = 999; } + C& operator = (const C& c) { val = c.val; return *this; } + + C& inc(int i) { val += i; return *this; } + + int val; +}; + +C +f(void) +{ + return C(3); +} + +C +f(int i) +{ + return f().inc(i); +} + +int +main(void) +{ + if (f (2).val != 5) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps6.C b/gcc/testsuite/g++.old-deja/g++.law/temps6.C new file mode 100644 index 000000000..19a12d740 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/temps6.C @@ -0,0 +1,25 @@ +// { dg-do run } +// GROUPS passed temps +// Date: Tue, 22 Mar 94 12:46:28 +0100 +// From: dak@pool.informatik.rwth-aachen.de +// Message-Id: <9403221146.AA07815@messua> +// Subject: Bad code for pointer to member use as reference in g++ 2.5.8 + +#include +struct str { + int i; +} xxx = {0}; + +int& test(str *arg1, int str::*arg2) +{ + return (arg1->*arg2); +} + +int main() +{ + test(&xxx, &str::i) = 5; + if (xxx.i == 0) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps7.C b/gcc/testsuite/g++.old-deja/g++.law/temps7.C new file mode 100644 index 000000000..04bf35259 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/temps7.C @@ -0,0 +1,11 @@ +// { dg-do assemble } +// GROUPS passed temps + +template +class A { +public: + class C {}; +}; + +template class A::C; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/typeck1.C b/gcc/testsuite/g++.old-deja/g++.law/typeck1.C new file mode 100644 index 000000000..12a8ff6e8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/typeck1.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed typeck +// typeck file +// From: vern@daffy.ee.lbl.gov (Vern Paxson) +// Date: 24 Sep 1992 23:11:22 GMT +// Subject: 2.2.2 type-checking error (?) when comparing pointers +// Message-ID: <26475@dog.ee.lbl.gov> + + + class a { }; + class foo : a { }; + class bar : a { }; + + int test( const foo* f, const bar* b ) + { + return f == b;// { dg-error "comparison between distinct pointer types" } + } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/typeck2.C b/gcc/testsuite/g++.old-deja/g++.law/typeck2.C new file mode 100644 index 000000000..e1bb8b584 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/typeck2.C @@ -0,0 +1,16 @@ +// { dg-do assemble } +// GROUPS passed typeck +// typeck file +// From: Jutta Degener +// Date: Wed, 9 Jun 1993 17:58:35 +0200 (MET DST) +// Subject: 2.4.3: Type of new +// Message-ID: <199306091558.AA19075@mail.cs.tu-berlin.de> + + typedef int arr[10]; +int main() + { + int * p = new int[10]; + int * q = new arr; /* g++ complains, but shouldn't */ + int (* r)[10] = new arr; /* g++ doesn't complain, but should */// { dg-error "" } + } + diff --git a/gcc/testsuite/g++.old-deja/g++.law/typeck3.C b/gcc/testsuite/g++.old-deja/g++.law/typeck3.C new file mode 100644 index 000000000..38e3d2214 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/typeck3.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// GROUPS passed typeck +// typeck file +// From: Dror Caspi +// Date: Wed, 9 Jun 1993 17:43:48 +0300 +// Subject: function typedefs in classes +// Message-ID: <199306091443.AA03735@zorba.fibronics.co.il> + +class a +{ + public: + typedef void (X)(); + + X x; // Member function of type X +}; + +class b +{ + public: + typedef void (X)(); //!!!!!! g++ says : syntax error before `;' + + X x; // Member function of type X +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/typeck4.C b/gcc/testsuite/g++.old-deja/g++.law/typeck4.C new file mode 100644 index 000000000..21e2d96b4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/typeck4.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed typeck +class A { + public: + const int &operator[]( int i ); + private: + int k; +}; + +const int& A::operator[]( int i ) +{ + return k; +} + + +void ff( A &anA ) +{ + int &ani = anA[0];// { dg-error "" } + + ani = 7; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/union1.C b/gcc/testsuite/g++.old-deja/g++.law/union1.C new file mode 100644 index 000000000..9d700499d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/union1.C @@ -0,0 +1,29 @@ +// { dg-do assemble } +// GROUPS passed unions +// anon-union file +// From: "Terry R. Coley" +// Date: Tue, 25 Aug 1992 17:33:29 -0700 +// Subject: possible bug in gcc/g++ +// Message-ID: <199208260033.AA19417@brahms.wag.caltech.edu> + +typedef enum { BADBINOP = 0, PLUS, MINUS, MULT, DIV, POWR } binoptype; +typedef enum { BADUNOP = 0, NEG = POWR+1, SIN, COS, TAN } unoptype; + +typedef struct { + const char *s; + union { + binoptype bop; + unoptype uop; + }; +} +op_to_charp; + +op_to_charp BINOPS[] = { {"+", PLUS}, + {"-", MINUS}, + {"*", MULT}, + {"/", DIV}, + {"^", POWR} }; + +int main() { + int dummy; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/union2.C b/gcc/testsuite/g++.old-deja/g++.law/union2.C new file mode 100644 index 000000000..37de9eaf0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/union2.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// GROUPS passed unions +// anon-union file +// From: gerlek@dat.cse.ogi.edu (Michael Gerlek) +// Date: Tue, 8 Dec 92 12:56 PST +// Subject: private anonymous unions have public members? (gcc-2.3.1) +// Message-ID: + +class A { +public: + int x; +private: + int y; // { dg-error "" } private + union { + int z; // { dg-error "" } private + }; +}; + +void f() { + A a; + + a.x = 0; + a.y = 1;// { dg-error "" } .* + a.z = 2;// { dg-error "" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/union3.C b/gcc/testsuite/g++.old-deja/g++.law/union3.C new file mode 100644 index 000000000..be874339a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/union3.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed unions +// anon-union file +// From: dcb@us-es.sel.de (David Binderman 3841) +// Date: Tue, 30 Mar 93 09:06:15 +0200 +// Subject: Page 183 of the ARM +// Message-ID: <9303300706.AA17079@slsvitt> + +static union { + char* uC; +private: + int uI;// { dg-error "" } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/union4.C b/gcc/testsuite/g++.old-deja/g++.law/union4.C new file mode 100644 index 000000000..f48ceeea2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/union4.C @@ -0,0 +1,13 @@ +// { dg-do assemble } +// GROUPS passed unions +// anon-union file +// From: hossein@veritas.com (Hossein Raassi) +// Date: Wed, 15 Dec 93 13:52 PST +// Subject: Internal Error +// Message-ID: + +static union { + struct SS { + int ss; + }; +};// { dg-warning "no members" } diff --git a/gcc/testsuite/g++.old-deja/g++.law/unsorted1.C b/gcc/testsuite/g++.old-deja/g++.law/unsorted1.C new file mode 100644 index 000000000..c220d9936 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/unsorted1.C @@ -0,0 +1,31 @@ +// { dg-do assemble } +// { dg-options "-O" } +// GROUPS passed unsorted +// unsorted.2 file +// From: skipnyc!skipsun!skip@fsg.com (Skip Gilbrech) +// Date: Wed, 10 Jun 92 6:55:18 EDT +// Subject: Problem with derived class access adjustment and -O +// Message-ID: <9206101055.AA20593@skipsun.UUCP> + + +class A { + public: + virtual void func() = 0; +}; + +class B : public A { + public: + void func() {} +}; + +class C : private B { + public: + B::func; +}; + +class D { + C c; + public: + void func() { c.func(); } +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/unsorted2.C b/gcc/testsuite/g++.old-deja/g++.law/unsorted2.C new file mode 100644 index 000000000..17d9fa4f9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/unsorted2.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// GROUPS passed unsorted +// code-gen file +// From: klaus@steinitz.mathematik.uni-dortmund.de +// Date: Mon, 15 Nov 1993 16:51:11 +0100 +// Message-ID: <9311151551.AA17761@steinitz.mathematik.uni-dortmund.de> + +template +class X +{ +}; + +template +X f(X,X) +{ + X result; + return result; +} + +int main() +{ + X<1,3> x; + X<1,2> y; + X<2,3> z; + x=f(y,z); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C new file mode 100644 index 000000000..4cfe51d77 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C @@ -0,0 +1,29 @@ +// { dg-do assemble } +// GROUPS passed vbase +// vbase file +// From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino) +// Date: 28 Jul 1994 05:17:39 GMT +// Subject: g++ 2.6 bug: virtual base class & protected methods +// Message-ID: <317f1j$o9c@agate.berkeley.edu> + + +#include + +class a { +protected: + virtual void foo() { std::cout << "Class A\n";} +}; + +class b : public virtual a {}; + +class c : public b { +public: + void bar() { b::foo();} +}; + +int main() { + c test; + test.bar(); +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual1.C b/gcc/testsuite/g++.old-deja/g++.law/virtual1.C new file mode 100644 index 000000000..9cf6d8e45 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/virtual1.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// { dg-options "-Woverloaded-virtual" } +// GROUPS passed virtual-warnings +// copy file +// From: gfm@mencon.mencon.oz.au (Graham Menhennitt) +// Date: Thu, 29 Apr 93 20:53:07 EST +// Subject: 4 bugs in g++ 2.3.3 +// Message-ID: <9304291053.AA00090@mencon> + + struct A { + virtual ~A(void); + }; + + struct B { + friend class A; + virtual void f(void); + }; + + struct C : public A { + virtual void f(void); + }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual2.C b/gcc/testsuite/g++.old-deja/g++.law/virtual2.C new file mode 100644 index 000000000..5d7428c1b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/virtual2.C @@ -0,0 +1,32 @@ +// { dg-do run } +// GROUPS passed virtual-functions +// Not in g++ bugs snapshot +// From: grande@isi.edu (Jim Grande) +// Subject: g++ 2.3.3 (HPPA) virt class definition dumps core +// Date: 5 Mar 1993 22:51:14 -0500 +// Message-ID: <23611@venera.isi.edu> + +#include + +class doubleclass +{ + public: + double d; + doubleclass(double x = 0) { d = x; } +}; + +class test +{ + doubleclass doublec; +}; + +class vderived : virtual public test +{ +}; + +int main() +{ + vderived v; + + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C new file mode 100644 index 000000000..46fa08512 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C @@ -0,0 +1,49 @@ +// { dg-do run } +// GROUPS passed virtual-functions +// virtual file +// From: allan@ramjet.multinet.DE (Allan Brighton) +// Subject: pos. bug in gcc-2.5.2 on hp +// Date: 4 Nov 1993 22:57:36 -0500 +// Message-ID: <9311041820.AA05942@ramjet.multinet.DE> + +#include +#include + +using namespace std; + +class BugStream : public ostringstream { +public: + BugStream() {} + BugStream& eval(); +}; + + +static struct Eval_ { } eval; +BugStream& operator<<(ostream& os, Eval_); + +BugStream& BugStream::eval() +{ + // make sure str is null terminated + *this << ends; + + // eval the command and set the status + const char* s = str().data(); + cerr << s << endl; + + // reset the stream for the next command + clear(ios::goodbit); + // rdbuf()->freeze(0); + seekp(0); + + return *this; +} + +BugStream& operator<<(ostream& os, Eval_) +{ + return ((BugStream&)os).eval(); +} + +int main() { + BugStream bs; + bs << "PASS" << eval; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual4.C b/gcc/testsuite/g++.old-deja/g++.law/virtual4.C new file mode 100644 index 000000000..975b6c828 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/virtual4.C @@ -0,0 +1,32 @@ +// { dg-do run } +// GROUPS passed virtual-functions +#include +#include + +int aset = 0; +class A +{ + public: + void Set() { SetProp(); } + virtual void SetProp() { aset++;} +}; + +class B:public A +{ + public: + void SetProp() { if (!aset) { printf ("FAIL\n"); exit (1);} aset--;} +}; + +int main() +{ + A a; + B b; + A *c=new A; + A *d=new B; + + a.Set(); + b.Set(); + c->Set(); + d->Set(); + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C new file mode 100644 index 000000000..1c786feb9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C @@ -0,0 +1,68 @@ +// { dg-do assemble } +// GROUPS passed visibility +#include + + + +class base { +//========== + + void base_priv(const char * n) + { std::cout << "base_priv called from: " << n << "\n"; } + +protected: + + void base_prot(const char * n) + { std::cout << "base_prot called from: " << n << "\n"; } + +public: + + void base_publ(const char * n) + { std::cout << "base_publ called from: " << n << "\n"; } + + void test(const char * n) { base_publ(n); base_prot(n); base_priv(n); } + +}; // class base + + + +class derived : private base { // Make this public, +//============================ // and we don't get an error + +friend void derived_friend(); + +public : + + void test(const char * n) { base_publ(n); base_prot(n);} + +}; // class derived + + + +void +derived_friend() +//-------------- +{ + derived pd; + + pd.base_publ("friend of derived class"); // Compiler error here + pd.base_prot("friend of derived class"); +} + + + +int main(int argc, char *argv[]) +//========================== +{ + base b; + b.base_publ("base class object"); + b.test("member of base class object"); + std::cout << "\n"; + + derived pd; + pd.test("member of derived class object"); + derived_friend(); + std::cout << "\n"; + +} /* main */ + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C new file mode 100644 index 000000000..23505f630 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed visibility + +#include + +class base { +public: + void f1 () { std::cout << "f1" << std::endl; } + void f2 () { std::cout << "f2" << std::endl; } +}; + +class deriv : public base { + void base :: f1();// { dg-error "" } .* +}; + +int main () +{ + deriv d; + + d.f2(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility11.C b/gcc/testsuite/g++.old-deja/g++.law/visibility11.C new file mode 100644 index 000000000..051bf33eb --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility11.C @@ -0,0 +1,52 @@ +// { dg-do assemble } +// { dg-options "-w" } +// GROUPS passed visibility +// visibility file +// From: Alan Shepherd +// Date: Tue, 22 Jun 1993 14:53:23 +0100 +// Subject: bug with MI in gcc-2.4.5 +// Message-ID: <9659.740757203@nexor.co.uk> + +class A +{ + int a; + +protected: + + virtual void State(int b) { a = b; } + +}; + +class B : public A +{ + char* foo; + +public: + + B(const char*); +}; + +class C : public A +{ + char* foo2; + +public: + + C(const char*); +}; + +class D : public B, public C +{ +public: + D(); +protected: + + virtual void State(int a) + { + B::State(a); + C::State(a); + } +}; + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility12.C b/gcc/testsuite/g++.old-deja/g++.law/visibility12.C new file mode 100644 index 000000000..4dbb15891 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility12.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: Mark Rawling +// Date: Wed, 30 Jun 93 15:28:34 +1000 +// Subject: member access rule bug +// Message-ID: <9306300528.AA17185@coda.mel.dit.CSIRO.AU> +struct a { + int aa; // { dg-error "" } private + }; + +class b : private a { + }; + +class c : public b { + int xx(void) { return (aa); } // aa should be invisible// { dg-error "" } .* + }; + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C new file mode 100644 index 000000000..025b0b1ef --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C @@ -0,0 +1,110 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: dinh@cs.ucla.edu (Dinh Le) +// Date: Mon, 12 Jul 93 22:21:06 -0700 +// Subject: class, template and their scoping problem +// Message-ID: <9307130521.AA18312@oahu.cs.ucla.edu> + +#include +#include + +// --------------- Array.h && Array.cc ------------------ + +using namespace std; + +const int ArraySize = 12; + +template +class Array { // { dg-error "" } .struct Array_RC redecl.* +friend class Array_RC; +public: + Array(const Type *ar, int sz) { init(ar,sz); } + virtual ~Array() { delete [] ia; } + virtual void print(ostream& = cout); + virtual Type& operator[](int ix) { return ia[ix]; } +private: + void init(const Type*, int); + int size; + int *ia; +}; + +template +ostream& operator<<( ostream& os, Array& ar ) +{ + ar.print(os); + return os; +} + +template +void Array::print(ostream& os) +{ + const int lineLength = 12; + + os << "( " << size << " )< "; + for (int ix = 0; ix < size; ++ix) { + if (ix % lineLength == 0 && ix) os << "\n\t"; + os << ia[ ix ]; + + if (ix % lineLength != lineLength-1 && + ix != size-1) + os << ", "; + } + os << " >\n"; +} + +template +void Array::init(const Type *array, int sz) +{ + ia = new Type[size = sz]; + + for (int ix = 0; ix < size; ++ix) + ia[ix] = (array!=0) ? array[ix] : (Type)0; +} + +// --------------- Array_RC.h && Array_RC.cc ---------------- + +template +class Array_RC : public Array { +public: + Array_RC(const Type *ar, int sz); + Type& operator[](int ix); +}; + +template +Array_RC::Array_RC(const Type *ar, int sz) : Array(ar, sz) {} + +template +Type &Array_RC::operator[](int ix) { + assert(ix >= 0 && ix < size);// { dg-error "" } member .size.* + return ia[ix];// { dg-error "" } member .ia.* +} + +// ------------------- Test routine ---------------------- + +template +void try_array( Array &iA ) +{ + cout << "try_array: initial array values:\n"; + cout << iA << endl; +} + +template +inline void +try_array( Array_RC &rc ) +{ + try_array( ((Array&)rc) ); +} + +int main() +{ + static int ia[10] = { 12, 7, 14, 9, 128, 17, 6, 3, 27, 5 }; + Array_RC iA(ia, 10); + + cout << "template Array_RC class" << endl; + try_array(iA); + + return 0; +} + +template class Array_RC; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility14.C b/gcc/testsuite/g++.old-deja/g++.law/visibility14.C new file mode 100644 index 000000000..24cfdcc25 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility14.C @@ -0,0 +1,21 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: ajp@eng.cam.ac.uk +// Date: Tue, 13 Jul 93 17:15:11 BST +// Message-ID: <1171.9307131615@ace.eng.cam.ac.uk + +class A { + static A* list; + + protected: + struct AA { + AA(); + ~AA(); + }; +}; + +A::AA::~AA() +{ + A* d=list; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility15.C b/gcc/testsuite/g++.old-deja/g++.law/visibility15.C new file mode 100644 index 000000000..434d7da92 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility15.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: wpsun4!xinforms!johnjo@uunet.uu.net (John D. Johnson) +// Date: Wed, 4 Aug 93 13:25:25 MDT +// Subject: Access to private 'operator new()' +// Message-ID: <9308041925.AA09825@xinforms.wpunix +#include +#include + +class X { +private: + void* operator new(size_t) throw(){// { dg-error "" } .* + printf("Inside private new().\n"); + return NULL; + } +public: + X() {} +}; + + +int main(void) +{ + X* p = new X;// { dg-error "" } .* +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility16.C b/gcc/testsuite/g++.old-deja/g++.law/visibility16.C new file mode 100644 index 000000000..e4b3bf854 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility16.C @@ -0,0 +1,35 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: Marie Trapp +// Date: Thu, 5 Aug 93 11:55:15 EDT +// Subject: access of protected members +// Message-ID: <9308051553.AA07639@nwd2sun1.analog.com> +class A { + protected: + int astuff; // { dg-error "" } protected + A() { + astuff = 3; + } +}; + +class B : public A { + int bstuff; + public: + B( A *p) { + bstuff = p->astuff;// { dg-error "" } .* + } +}; + +class C : public A { + int cstuff; + public: + C() { + cstuff = 5; + } +}; + +int main() { + C cvar; + B bvar(&cvar); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C new file mode 100644 index 000000000..67ef8927a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C @@ -0,0 +1,66 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: Sandeep Shroff +// Date: Thu, 05 Aug 1993 17:23:20 -0700 +// Subject: Access to private constructor. +// Message-ID: <9308060023.AA10283@neptune.caere.com> +#include +#include + +class Base +{ +public: + char* getName() {return name_;} + +private: + Base(); + Base(char* str); + + char* name_; +}; + +class Derived : public Base +{ +public: + Derived(int n, char* str); + Derived(int n); + + int getNum() {return num_;} +private: + int num_; +}; + +Base::Base() // { dg-error "is private" } +{ + name_ = std::strcpy(new char[std::strlen(" ") + 1], " "); +} + +Base::Base(char* str) // { dg-error "is private" } +{ + if(str != NULL) + name_ = std::strcpy(new char[std::strlen(str) + 1], str); +} + +Derived::Derived(int n, char* str) : Base(str) // { dg-error "within this context" } +{ + num_ = n; +} + +Derived::Derived(int n) : Base() // { dg-error "within this context" } +{ + num_ = n; +} + + + +int main() +{ + // Derived* d = new Derived(10, "test"); + Derived* d = new Derived(10); + + std::cerr << d->getNum() << "\t" << d->getName() << std::endl; +} + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility18.C b/gcc/testsuite/g++.old-deja/g++.law/visibility18.C new file mode 100644 index 000000000..cf67c2dcc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility18.C @@ -0,0 +1,20 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: cmwang@iis.sinica.edu.tw (Chien-Min Wang) +// Date: Fri, 6 Aug 93 19:42:31 CST +// Subject: A bug in g++ 2.4.5 +// Message-ID: <9308061142.AA08533@iiserv> +struct T1 { int i; }; + +struct T2 { int j; }; // { dg-error "" } private + +struct T3 : public T1, private T2 { +} x; + +int main () +{ + x.i = 1; + x.j = 2; // error: x.j is private// { dg-error "" } .* + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility19.C b/gcc/testsuite/g++.old-deja/g++.law/visibility19.C new file mode 100644 index 000000000..f2bb302ca --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility19.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: mclaugh@tnt.acsys.com (Mark A. McLaughlin) +// Date: Wed, 25 Aug 93 14:30:47 MDT +// Subject: g++ bug +// Message-ID: <9308252030.AA02352@tnt.acsys.com> +class B { +protected: + int i; // { dg-error "" } protected +}; + +class D1 : public B { +}; + +class D2 : public B { + friend void fr(B*,D1*,D2*); + void mem(B*,D1*); +}; + +void fr(B* pb, D1* p1, D2* p2) +{ + pb->i = 1; // illegal// { dg-error "" } .* + p1->i = 2; // illegal// { dg-error "" } .* + p2->i = 3; // ok (access through D2) +} + +void D2::mem(B* pb, D1* p1) +{ + pb->i = 1; // illegal// { dg-error "" } .* + p1->i = 2; // illegal// { dg-error "" } .* + i = 3; // ok (access through `this') +} + +void g(B* pb, D1* p1, D2* p2) +{ + pb->i = 1; // illegal// { dg-error "" } .* + p1->i = 2; // illegal// { dg-error "" } .* + p2->i = 3; // illegal// { dg-error "" } .* +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C new file mode 100644 index 000000000..539169639 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C @@ -0,0 +1,68 @@ +// { dg-do assemble } +// GROUPS passed visibility +#include + + + +class base { +//========== + + void base_priv(const char * n) + { std::cout << "base_priv called from: " << n << "\n"; } + +protected: + + void base_prot(const char * n) + { std::cout << "base_prot called from: " << n << "\n"; } + +public: + + void base_publ(const char * n) + { std::cout << "base_publ called from: " << n << "\n"; } + + void test(const char * n) { base_publ(n); base_prot(n); base_priv(n); } + +}; // class base + + + +class derived : public base { // Make this public, +//============================ // and we don't get an error + +friend void derived_friend(); + +public : + + void test(const char * n) { base_publ(n); base_prot(n);} + +}; // class derived + + + +void +derived_friend() +//-------------- +{ + derived pd; + + pd.base_publ("friend of derived class"); // Compiler error here + pd.base_prot("friend of derived class"); +} + + + +int main(int argc, char *argv[]) +//========================== +{ + base b; + b.base_publ("base class object"); + b.test("member of base class object"); + std::cout << "\n"; + + derived pd; + pd.test("member of derived class object"); + derived_friend(); + std::cout << "\n"; + +} /* main */ + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility20.C b/gcc/testsuite/g++.old-deja/g++.law/visibility20.C new file mode 100644 index 000000000..0560523bf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility20.C @@ -0,0 +1,36 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: doug@foxtrot.ccmrc.ucsb.edu (Douglas Scott) +// Date: Tue, 10 Aug 93 10:06:33 PDT +// Subject: G++ 2.4.5 allows access to protected base members +// Message-ID: <9308101706.AA04485@foxtrot.ccmrc.ucsb.edu> + +class Base { +protected: + void protectedBaseFunction() {} // { dg-error "" } protected +public: + Base() {} +}; + + +class Derived : public Base { +public: + Derived() {} + void noticeThisFunction(Base *); +}; + + +void +Derived::noticeThisFunction(Base *b) { + b->protectedBaseFunction(); // ARM says this is not allowed// { dg-error "" } .* + // since it is not called on 'this' +} + +int main() { + Base b; + Derived d; + d.noticeThisFunction(&b); + printf("gpptest run\n");// { dg-error "" } .* +} + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility21.C b/gcc/testsuite/g++.old-deja/g++.law/visibility21.C new file mode 100644 index 000000000..6a57783c6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility21.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: klamer@mi.el.utwente.nl (Klamer Schutte) +// Date: Thu, 12 Aug 93 12:03:09 +0200 +// Subject: g++ 2.4.5 failed to report a bug +// Message-ID: <9308121003.AA02294@mi.el.utwente.nl> +class A { +protected: + void foo(); // { dg-error "" } protected +}; + +class B : public A +{ + void bar(A &a) + { a.foo(); }// { dg-error "" } .* +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C new file mode 100644 index 000000000..f97ef8147 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: Robert Carden +// Date: Thu, 12 Aug 1993 13:48:05 -0700 +// Subject: bug 8/12/93 -- #5 +// Message-ID: <9308121348.aa26256@Paris.ics.uci.edu> + +// 5.cc +#include + +class A { + int x; +public: + void f(int); + void f(float); + void g(void *); +}; + +class B : private A { +protected: + A::f; +public: + A::g; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility24.C b/gcc/testsuite/g++.old-deja/g++.law/visibility24.C new file mode 100644 index 000000000..3acd83707 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility24.C @@ -0,0 +1,40 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: joe@consolve.com (Joe Shapiro) +// Date: Fri, 20 Aug 93 17:18:18 EDT +// Subject: Template classes seem to allow users to get at private members +// Message-ID: <9308202118.AA25599@ghana.consolve> +/* + * private.cc + */ +extern "C" int printf (const char *, ...); + +template +class A +{ +public: + void Fun() { printf( "Fun fun fun!\n" ); } // { dg-error "" } private +}; + + +template +class B: private A +{ +}; + + +class C +{ +public: + C() { _b.Fun(); }// { dg-error "" } .* + +private: + B _b; +}; + + +int main() +{ + C c; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C new file mode 100644 index 000000000..167436d00 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: gfm@mencon.mencon.oz.au (Graham Menhennitt) +// Date: Wed, 17 Nov 93 21:30:32 EST +// Subject: gcc 2.5.3 - can't privately inherit and contain same class +// Message-ID: <9311171030.AA00604@mencon> +#include + +class A { +public: + A(void); +}; + +class B : private A { +public: + B(void) : A() {} +}; + +class C : public B { +public: + C(void) : B(), a() {} + +private: + ::A a; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility26.C b/gcc/testsuite/g++.old-deja/g++.law/visibility26.C new file mode 100644 index 000000000..cfef2df50 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility26.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: jamshid@ses.com (Jamshid Afshar) +// Date: Sun, 12 Dec 93 03:09:15 CST +// Subject: Missed access declaration error +// Message-ID: <9312120909.AA22135@ses.com> + +class X { + public: + void f(); +}; + +class Y : private X { + public: + void f(int); + X::f; // used to be an error; now equivalent to 'using X::f' +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility27.C b/gcc/testsuite/g++.old-deja/g++.law/visibility27.C new file mode 100644 index 000000000..2d41b67aa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility27.C @@ -0,0 +1,19 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: jbuck@synopsys.com (Joe Buck) +// Date: 3 Aug 1994 01:52:04 GMT +// Subject: 2.6.0 bug with protected members and virtual baseclasses +// Message-ID: <31mt84$lfq@hermes.synopsys.com> + +struct R { +protected: + virtual void foo(); +}; + +struct A : public R { +}; + +struct B : virtual public A { + void bletch() { foo();} +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility28.C b/gcc/testsuite/g++.old-deja/g++.law/visibility28.C new file mode 100644 index 000000000..a7141ae5e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility28.C @@ -0,0 +1,24 @@ +// { dg-do assemble } +// GROUPS passed visibility +extern "C" int printf( const char *, ...); + +class B { +public: + B() { } + virtual ~B() { printf( "B::~B\n"); } +}; + +class D : public B { +public: + virtual ~D() { printf( "D::~D\n"); } + void operator = ( int i) { this->~B(); } +}; + +int +main() +{ + D * pd = new D; + B * pb = pd; + delete pb; + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility3.C b/gcc/testsuite/g++.old-deja/g++.law/visibility3.C new file mode 100644 index 000000000..64d64df64 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility3.C @@ -0,0 +1,22 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: kol@world.std.com (Nikolay Yatsenko) +// Date: Wed, 27 Jan 1993 16:39:00 -0500 +// Subject: g++ bug +// Message-ID: <199301272139.AA25442@world.std.com> + +int x; + +int main(void) +{ + static int s; + int x; // { dg-error "" } declared + extern int g(); + + struct local { + int g() { return x; } // illegal (non-static x); g++ does not give error// { dg-error "" } + int h() { return s; } // ok, but g++ give error + }; + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility4.C b/gcc/testsuite/g++.old-deja/g++.law/visibility4.C new file mode 100644 index 000000000..7f346058b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility4.C @@ -0,0 +1,25 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: dcb@us-es.sel.de (David Binderman 3841) +// Date: Tue, 30 Mar 93 15:48:47 +0200 +// Subject: page 242 of the ARM +// Message-ID: <9303301348.AA20751@slsvitt> + +class A { +public: + int b; // { dg-error "" } private +}; + +class C : private A { // NOTE WELL. private, not public +public: + int d; +}; + +extern "C" int printf( const char *, ...); + +class E : public C { + void f() { + printf( "%d\n", b);// { dg-error "" } .* + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility5.C b/gcc/testsuite/g++.old-deja/g++.law/visibility5.C new file mode 100644 index 000000000..d8e73e7c9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility5.C @@ -0,0 +1,17 @@ +// { dg-do assemble } +// GROUPS passed visibility + +class a { + +private: + a (int i);// { dg-error "" } .* + +public: + a (); +}; + +void test () +{ + a *ap = new a; + a *ap2 = new a (3);// { dg-error "" } .* +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility6.C b/gcc/testsuite/g++.old-deja/g++.law/visibility6.C new file mode 100644 index 000000000..927479263 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility6.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: Rob Hasker +// Date: Sat, 3 Apr 1993 13:19:05 -0600 +// Subject: no privacy +// Message-ID: <199304031919.AA20554@sparc17.cs.uiuc.edu +class Top { +public: + Top() {} + void val() {} // { dg-error "" } private base class +}; + +class Derived : private Top { +public: + Derived() {} +}; + +class Unrelated { + Derived derived; +public: + void oops() { derived.val(); }// { dg-error "" } .* +}; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C new file mode 100644 index 000000000..ed37f5f8d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C @@ -0,0 +1,73 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: Gordon Joly +// Date: Wed, 21 Apr 93 09:42:07 +0100 +// Subject: /*** BUG REPORT : THE MYTH OF PRIVATE INHERITANCE ***/ +// Message-ID: <9304210842.AA01815@life.ai.mit.edu> +#include + +class A { + private: + int number; + public: + A(int i) : number(i) + {} + virtual ~A() + {} + virtual void Number(int c) // { dg-error "inaccessible" } + { number = c; } + virtual int Number() // { dg-error "inaccessible" } + { return number; } +}; + +class B : private A { + private: + int second_number; + public: + B(int c, int i) : second_number(c), A(i) + {} + virtual ~B() + {} + + virtual void firstNumber(int b) // renames member function Number(int) of class A + { A::Number(b); } + virtual int firstNumber() // renames member function Number() of class A + { return A::Number(); } +}; + + + + +class C { + private: + B* bobject; + public: + C(B* bp) : bobject(bp) + {} + virtual ~C() + {} + // + // the following two functions access + // private member functions of class B + // and they should not be able to do so + // + virtual void setBValue(int i) + { if (bobject) bobject->Number(i); } // { dg-error "this context|accessible base" } + virtual int getBValue() + { if (bobject) { return bobject->Number(); } return 0; } // { dg-error "this context|accessible base" } +}; + + +int main() +{ + B* bobject = new B(2, 1); + C* cobject = new C(bobject); + cobject->setBValue(8); + std::cout << cobject->getBValue() << std::endl; + delete bobject; + delete cobject; +} + + + diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility8.C b/gcc/testsuite/g++.old-deja/g++.law/visibility8.C new file mode 100644 index 000000000..17a3cf8c0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility8.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// GROUPS passed visibility +// visibility file +// From: roland@jts.com (Roland Knight ) +// Date: Thu, 29 Apr 1993 16:17:00 -0400 +// Subject: gcc 2.3.3 bug +// Message-ID: + +class A { +protected: + int a; // { dg-error "" } protected +}; + +class B : public A { +public: + void f1(A* pa); +}; + + +void B::f1(A* pa) { + pa->a = 1; // illegal but allowed by gcc// { dg-error "" } .* +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/vtable1.C b/gcc/testsuite/g++.old-deja/g++.law/vtable1.C new file mode 100644 index 000000000..a4c1ce994 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/vtable1.C @@ -0,0 +1,27 @@ +// { dg-do assemble } +// { dg-options "-w" } +// GROUPS passed vtable +// vtable file +// From: mrs@cygnus.com (Mike Stump) +// Date: Wed, 20 Apr 1994 17:46:11 -0700 +// Subject: vtable name generation is wrong +// Message-ID: <199404210046.RAA25652@rtl.cygnus.com> + +// prepare_fresh_vtable doesn't build the names of +// vtables very well. + +struct B { + virtual void vf() { } +}; + +struct Main { + virtual void vf() { } +}; + +struct Other : public Main, public B { + virtual void vf() { } +}; + +struct D : public Main, public B, public Other { + virtual void vf() { } +} a; diff --git a/gcc/testsuite/g++.old-deja/g++.law/vtable2.C b/gcc/testsuite/g++.old-deja/g++.law/vtable2.C new file mode 100644 index 000000000..fcd3a65a1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/vtable2.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// GROUPS passed vtable +struct C1 +{ + virtual ~C1(); +}; + +struct C2 : public virtual C1 +{ + virtual ~C2(); +}; + +struct C3 : public virtual C2 +{ + virtual ~C3(); +}; + +C3::~C3() {} diff --git a/gcc/testsuite/g++.old-deja/g++.law/vtable3.C b/gcc/testsuite/g++.old-deja/g++.law/vtable3.C new file mode 100644 index 000000000..fc837174a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/vtable3.C @@ -0,0 +1,25 @@ +// { dg-do run } +// GROUPS passed vtable +// vtable file +// From: Pete Bevin +// Date: Mon, 28 Nov 1994 19:57:53 +0000 (GMT) +// Subject: g++-2.6.2: Virtual inheritance causes incorrect padding +// Message-ID: + +extern "C" int printf (const char *, ...); + +struct A { +}; + + +struct B : virtual A { + public: + int b; +}; + + +int main() +{ + B blist[10]; + printf ("PASS\n"); +} diff --git a/gcc/testsuite/g++.old-deja/g++.law/weak.C b/gcc/testsuite/g++.old-deja/g++.law/weak.C new file mode 100644 index 000000000..99a0f1772 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/weak.C @@ -0,0 +1,20 @@ +// { dg-do link { target i?86-*-linux* x86_64-*-linux* } } +// { dg-require-effective-target static } +// { dg-options "-static" } +// Bug: g++ fails to instantiate operator<<. + +// libc-5.4.xx has __IO_putc in its static C library, which can conflict +// with the copy of __IO_putc in the libstdc++ library built by egcs. +#include +#include +#include + +std::istream x (0); + +main () { + x.get(); + std::putc(0, 0); + std::fgets(0, 0, 0); + x.get((char*) 0, 0); +} + -- cgit v1.2.3