--- /dev/null
+// 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
--- /dev/null
+// 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();
--- /dev/null
+// 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;