summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-21 17:49:59 +0000
committeroliva <oliva@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-21 17:49:59 +0000
commit0fcdecb459ac25884886dfa09191da916dcb2e96 (patch)
treec80271ae2afaf401e64eb3ce3710db73eeeba145
parent23033779b0cbbe7dc377276b7d6ad9ca1ab478a5 (diff)
downloadppe42-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/ChangeLog4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/delete2.C25
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/delete3.C36
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/delete4.C29
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/delete5.C29
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();
+}
+
+
OpenPOWER on IntegriCloud