aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@dcc.unicamp.br>1999-07-17 14:26:13 +0000
committerAlexandre Oliva <oliva@gcc.gnu.org>1999-07-17 14:26:13 +0000
commit70ceca9bf0624ff620cafaf96a7330c1bce4bebb (patch)
treed3755f00fe3801f292e11d784f1df67d0ff98a28 /gcc
parentbef10da0585c3fcd511ed8c3040022218f7ab24d (diff)
downloadgcc-70ceca9bf0624ff620cafaf96a7330c1bce4bebb.zip
gcc-70ceca9bf0624ff620cafaf96a7330c1bce4bebb.tar.gz
gcc-70ceca9bf0624ff620cafaf96a7330c1bce4bebb.tar.bz2
* template6.C, delete1.C, template7.C: New test.
From-SVN: r28140
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/delete1.C31
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/template6.C11
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/template7.C16
4 files changed, 62 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
index 3a813b7..212d672 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
@@ -1,3 +1,7 @@
+1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br>
+
+ * template6.C, delete1.C, template7.C: New test.
+
1999-07-13 Alexandre Oliva <oliva@dcc.unicamp.br>
* template5.C: New test.
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C b/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
new file mode 100644
index 0000000..dee7f21
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
@@ -0,0 +1,31 @@
+// Build don't link:
+
+// Copyright (C) 1999 Free Software Foundation
+
+// by Alexandre Oliva <oliva@dcc.unicamp.br>
+// simplified from bug report by K. Haley <khaley@bigfoot.com>
+// based on analysis by Martin v. Loewis
+
+// [class.dtor]/11: delete must be implicitly checked for
+// accessibility only in the definition of virtual destructors,
+// implicitly defined or not.
+
+struct foo {
+ foo() {}
+private:
+ void operator delete(void *) {} // ERROR - private
+} foo_;
+
+struct bar : foo {
+ ~bar() {
+ delete this; // ERROR - delete is private
+ // An implicit invocation of delete is emitted in destructors, but
+ // it should only be checked in virtual destructors
+ } // gets bogus error - not virtual - XFAIL *-*-*
+} bar_;
+
+struct baz : foo {
+ virtual ~baz() {} // ERROR - delete is private in vdtor
+} baz_;
+
+struct bad : baz {} bad_; // ERROR - delete is private in vdtor
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/template6.C b/gcc/testsuite/g++.old-deja/g++.oliva/template6.C
new file mode 100644
index 0000000..3902d5d
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/template6.C
@@ -0,0 +1,11 @@
+// Build don't link:
+
+// Copyright (C) 1999 Free Software Foundation
+
+// by Alexandre Oliva <oliva@dcc.unicamp.br>
+// simplified from bug report by Meenaradchagan Vishnu <mvishnu@fore.com>
+
+// crash test - XFAIL *-*-*
+
+template <typename> struct foo {};
+template <> void foo();
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/template7.C b/gcc/testsuite/g++.old-deja/g++.oliva/template7.C
new file mode 100644
index 0000000..90da431
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/template7.C
@@ -0,0 +1,16 @@
+// Build don't link:
+
+// Copyright (C) 1999 Free Software Foundation
+
+// by Alexandre Oliva <oliva@dcc.unicamp.br>
+// simplified from bug report by Paul Burchard <burchard@pobox.com>
+
+// crash test - XFAIL *-*-*
+
+template<class> struct A {};
+template<template<class> class T> struct B {
+ B() {
+ T<B>();
+ }
+};
+B<A> foo;