diff options
| author | oliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-21 17:49:59 +0000 |
|---|---|---|
| committer | oliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-21 17:49:59 +0000 |
| commit | 0fcdecb459ac25884886dfa09191da916dcb2e96 (patch) | |
| tree | c80271ae2afaf401e64eb3ce3710db73eeeba145 | |
| parent | 23033779b0cbbe7dc377276b7d6ad9ca1ab478a5 (diff) | |
| download | ppe42-gcc-0fcdecb459ac25884886dfa09191da916dcb2e96.tar.gz ppe42-gcc-0fcdecb459ac25884886dfa09191da916dcb2e96.zip | |
* delete2.C, delete3.C, delete4.C, delete5.C: New tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30607 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/delete2.C | 25 | ||||
| -rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/delete3.C | 36 | ||||
| -rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/delete4.C | 29 | ||||
| -rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/delete5.C | 29 |
5 files changed, 123 insertions, 0 deletions
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 <oliva@lsd.ic.unicamp.br> + + * delete2.C, delete3.C, delete4.C, delete5.C: New tests. + 1999-11-19 Alexandre Oliva <oliva@lsd.ic.unicamp.br> * 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 <oliva@lsd.ic.unicamp.br> +// distilled from bug report by Barry M. Caceres <barryc@itravelpartners.com> + +// 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 <oliva@lsd.ic.unicamp.br> + +// 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 <oliva@lsd.ic.unicamp.br> + +// 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 <oliva@lsd.ic.unicamp.br> + +// 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(); +} + + |

