* g++.old-deja/g++.pt/static11.C: Skip on mmix-knuth-mmixware.
* g++.dg/other/static11.C: Copy g++.old-deja/g++.pt/static11.C for
-da test.
From-SVN: r51656
+2002-03-31 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * g++.old-deja/g++.pt/static11.C: Skip on mmix-knuth-mmixware.
+ * g++.dg/other/static11.C: Copy g++.old-deja/g++.pt/static11.C for
+ -da test.
+
2002-03-31 Richard Henderson <rth@redhat.com>
* gcc.dg/special/alias-2.c: New.
--- /dev/null
+// This is a copy of g++.old-deja/g++.pt/static11.C which at one
+// time got a SEGV for mmix-knuth-mmixware when compiled with
+// -da (or either -dj or -df).
+// { dg-do compile }
+// { dg-options "-da" }
+
+extern "C" void _exit (int);
+
+int r = 1;
+
+struct A
+{
+ void f(){};
+ A(){ ++r; }
+ ~A(){ r -= 2; _exit (r); }
+};
+
+template<class T>
+struct C
+{
+ C(){ a.f(); }
+ static A a;
+};
+
+template <class T> A C<T>::a;
+typedef C<int> B;
+
+int main()
+{
+ C<int> c;
+ return r;
+}
// Bug: g++ was failing to destroy C<int>::a because it was using two
// different sentry variables for construction and destruction.
+//
+// Some targets (e.g. those with "set_board_info needs_status_wrapper 1"
+// in their dejagnu baseboard description) require that the status is
+// final when exit is entered (or main returns), and not "overruled" by a
+// destructor calling _exit. It's not really worth it to handle that.
+// Skip if target: mmix-knuth-mmixware
extern "C" void _exit (int);