From 250ba2372cdb135d47cb4a47227d0457fb73ce9a Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sun, 21 Nov 1999 17:49:59 +0000 Subject: [PATCH] * delete2.C, delete3.C, delete4.C, delete5.C: New tests. From-SVN: r30607 --- .../g++.old-deja/g++.oliva/ChangeLog | 4 +++ .../g++.old-deja/g++.oliva/delete2.C | 25 +++++++++++++ .../g++.old-deja/g++.oliva/delete3.C | 36 +++++++++++++++++++ .../g++.old-deja/g++.oliva/delete4.C | 29 +++++++++++++++ .../g++.old-deja/g++.oliva/delete5.C | 29 +++++++++++++++ 5 files changed, 123 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.oliva/delete2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.oliva/delete3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.oliva/delete4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.oliva/delete5.C diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog index 79ae203b42d..9d636f9b46e 100644 --- a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog +++ b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog @@ -1,3 +1,7 @@ +1999-11-21 Alexandre Oliva + + * delete2.C, delete3.C, delete4.C, delete5.C: New tests. + 1999-11-19 Alexandre Oliva * template7.C: Crash test passes, bug error is now bogus. diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/delete2.C b/gcc/testsuite/g++.old-deja/g++.oliva/delete2.C new file mode 100644 index 00000000000..cdd0dc566a0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.oliva/delete2.C @@ -0,0 +1,25 @@ +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva +// distilled from bug report by Barry M. Caceres + +// Test whether dtors of vbases are called on delete[]. + +extern "C" void abort(); +extern "C" void exit(int); + +struct Foo { + ~Foo() { + std::exit(0); + } +}; + +struct Bar : virtual Foo { +}; + +int main() { + delete [] new Bar[1]; + std::abort(); +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/delete3.C b/gcc/testsuite/g++.old-deja/g++.oliva/delete3.C new file mode 100644 index 00000000000..65932d35e75 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.oliva/delete3.C @@ -0,0 +1,36 @@ +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva + +// Test whether dtors of vbases are called on throw within new[]. +// Variant of delete2.C. + +extern "C" void abort(); +extern "C" void exit(int); + +struct Foo { + static bool first; + + Foo() { + if (first) + first = false; + else + throw first; + } + + ~Foo() { + std::exit(0); + } +}; + +bool Foo::first = true; + +struct Bar : virtual Foo { +}; + +int main() { + delete [] new Bar[2]; + std::abort(); +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/delete4.C b/gcc/testsuite/g++.old-deja/g++.oliva/delete4.C new file mode 100644 index 00000000000..def34112273 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.oliva/delete4.C @@ -0,0 +1,29 @@ +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva + +// Test whether dtors of vbases are called from dtor of aggregate of array. +// Variant of delete2.C and delete3.C. + +extern "C" void abort(); +extern "C" void exit(int); + +struct Foo { + ~Foo() { + std::exit(0); + } +}; + +struct Bar : virtual Foo { +}; + +struct Baz { + Bar i[1]; +}; + +int main() { + Baz(); + std::abort(); +} + + diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/delete5.C b/gcc/testsuite/g++.old-deja/g++.oliva/delete5.C new file mode 100644 index 00000000000..8284525abe5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.oliva/delete5.C @@ -0,0 +1,29 @@ +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva + +// Test whether dtors of vbases are called from dtor of auto array. +// Variant of delete2.C, delete3.C and delete4.C. + +extern "C" void abort(); +extern "C" void exit(int); + +struct Foo { + ~Foo() { + std::exit(0); + } +}; + +struct Bar : virtual Foo { +}; + +void foo() { + Bar i[1]; +} + +int main() { + foo(); + std::abort(); +} + + -- 2.30.2