From b9d969b7d40904b673662ffb656b90e184655456 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 2 Jun 2000 20:02:48 -0400 Subject: [PATCH] new From-SVN: r34366 --- .../g++.old-deja/g++.ext/instantiate1.C | 23 +++++++++++++++++++ .../g++.old-deja/g++.ext/instantiate2.C | 17 ++++++++++++++ .../g++.old-deja/g++.ext/instantiate3.C | 17 ++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.ext/instantiate1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C diff --git a/gcc/testsuite/g++.old-deja/g++.ext/instantiate1.C b/gcc/testsuite/g++.old-deja/g++.ext/instantiate1.C new file mode 100644 index 00000000000..43cc9f67a0c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.ext/instantiate1.C @@ -0,0 +1,23 @@ +// Test that 'extern template' suppresses instantiations. +// Special g++ Options: -g -O + +// Ignore the 'ld returned 1' message from collect2. +// excess errors test - XFAIL *-*-* + +template void f (T) { } +extern template void f (int); + +template struct A { + void f () { } +}; +extern template struct A; + +int main () +{ + f (42); // ERROR - not instantiated + A a; + a.f (); // ERROR - not instantiated + f (2.0); // gets bogus error + A b; + b.f (); // gets bogus error +} diff --git a/gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C b/gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C new file mode 100644 index 00000000000..05c3e202864 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C @@ -0,0 +1,17 @@ +// Test that 'static template' instantiates statics. +// Special g++ Options: -g -fno-implicit-templates + +// Ignore the 'ld returned 1' message from collect2. +// excess errors test - XFAIL *-*-* + +template struct A { + static T t; +}; +template T A::t = 0; +static template struct A; + +int main () +{ + A::t = 42; // gets bogus error + A::t = 42; // ERROR - not instantiated +} diff --git a/gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C b/gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C new file mode 100644 index 00000000000..7d710c4ba21 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C @@ -0,0 +1,17 @@ +// Test that 'inline template' instantiates the vtable. +// Special g++ Options: -g -O -fno-implicit-templates + +// Ignore the 'ld returned 1' message from collect2. +// excess errors test - XFAIL *-*-* + +template struct A { + virtual void f () { } +}; +inline template struct A; + +A a; // gets bogus error +A b; // ERROR - not instantiated + +int main () +{ +} -- 2.30.2