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. --- .../g++.old-deja/g++.robertl/eh990323-1.C | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.robertl/eh990323-1.C (limited to 'gcc/testsuite/g++.old-deja/g++.robertl/eh990323-1.C') diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eh990323-1.C b/gcc/testsuite/g++.old-deja/g++.robertl/eh990323-1.C new file mode 100644 index 000000000..221a6d79c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.robertl/eh990323-1.C @@ -0,0 +1,77 @@ +// { dg-do run } +// check cleanup of template temporaries +extern "C" void abort (); +extern "C" void exit (int); + +int ctor = 0; +int dtor = 0; + +template struct A { + A() {ctor++;} + A(int) {ctor++;} + A(const A&) {ctor++;} + ~A() {dtor++;} + operator int() {return 0;} +}; + +template void ff(T); + +template void ff(T) +{ +} + +void g(int) +{ +} + +void f() +{ + int x; + + A a1; + A a2(37); + A a3 = A(47); + A a4 = 97; + + g(A()); + + A(); + + x ? A() : A(); + + x = 47, A(), A(39), A(23), -17; + + while (A()) + ; + for (;A(3);) + ; + if (A >()) + ; + + ff(A()); + + throw 59; +} + +int +main() +{ + int flag = 0; + + try { + A(); + f(); + } + catch (int) { + A(34); + flag = 1; + } + + if (!flag) + abort(); + + if (!ctor || ctor != dtor) + abort(); + + exit(0); +} -- cgit v1.2.3