* g++.dg/ext/instantiate1.C: Use scan-assembler, not link errors.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Mar 2002 01:52:55 +0000 (01:52 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Mar 2002 01:52:55 +0000 (01:52 +0000)
        * g++.dg/ext/instantiate2.C, g++.dg/ext/instantiate3.C: Likewise;
        move from g++.old-deja/g++.ext/.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51491 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/instantiate1.C
gcc/testsuite/g++.dg/ext/instantiate2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/instantiate3.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C [deleted file]
gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C [deleted file]

index f660231..5cf5780 100644 (file)
@@ -1,3 +1,9 @@
+2002-03-27  Richard Henderson  <rth@redhat.com>
+
+       * g++.dg/ext/instantiate1.C: Use scan-assembler, not link errors.
+       * g++.dg/ext/instantiate2.C, g++.dg/ext/instantiate3.C: Likewise;
+       move from g++.old-deja/g++.ext/.
+
 2002-03-27  Mark Mitchell  <mark@codesourcery.com>
 
        * g++.dg/init/new2.C: New test.
index 90a4af0..04d7400 100644 (file)
@@ -1,5 +1,5 @@
 // Test that 'extern template' suppresses instantiations.
-// { dg-do link }
+// { dg-do compile }
 // { dg-options "" }
 
 template <class T> void f (T) { }
@@ -11,22 +11,14 @@ template <class T> struct A {
 template <class T> void A<T>::f () { }
 extern template struct A<int>;
 
-// { dg-error "void f<int>\\(int\\)" "suppressing f<int>" { target *-*-* } "0" }
+// { dg-final { scan-assembler-not "\n_?_Z1fIiEvT_(:|\n)" } }
 void test_f_int () { f(42); } 
 
-// { dg-error "A<int>::f\\(\\)" "suppressing A<int>" { target *-*-* } "0" }
+// { dg-final { scan-assembler-not "\n_?_ZN1AIiE1fEv(:|\n)" } }
 void test_A_int_f () { A<int> a; a.f (); }
 
-// { dg-bogus "void f<double>\\(double\\)" "f<double>" { target *-*-* } "0" }
+// { dg-final { scan-assembler "\n_?_Z1fIdEvT_(:|\n)" } }
 void test_f_double () { f (2.0); }
 
-// { dg-bogus "A<double>::f\\(\\)" "A<double>" { target *-*-* } "0" }
+// { dg-final { scan-assembler "\n_?_ZN1AIdE1fEv(:|\n)" } }
 void test_A_double_f () { A<double> b; b.f (); }
-
-int main ()
-{
-  test_f_int ();
-  test_A_int_f ();
-  test_f_double ();
-  test_A_double_f ();
-}
diff --git a/gcc/testsuite/g++.dg/ext/instantiate2.C b/gcc/testsuite/g++.dg/ext/instantiate2.C
new file mode 100644 (file)
index 0000000..c812dba
--- /dev/null
@@ -0,0 +1,15 @@
+// Test that 'static template' instantiates statics.
+// { dg-do compile }
+// { dg-options "-fno-implicit-templates" }
+
+template <class T> struct A {
+  static T t;
+};
+template <class T> T A<T>::t = 0;
+static template struct A<int>;
+
+// { dg-final { scan-assembler "\n_?_ZN1AIiE1tE(:|\n)" } }
+void test_int() { A<int>::t = 42; }
+
+// { dg-final { scan-assembler-not "\n_?_ZN1AIcE1tE(:|\n)" } }
+void test_char() { A<char>::t = 42; }
diff --git a/gcc/testsuite/g++.dg/ext/instantiate3.C b/gcc/testsuite/g++.dg/ext/instantiate3.C
new file mode 100644 (file)
index 0000000..c0f61fc
--- /dev/null
@@ -0,0 +1,14 @@
+// Test that 'inline template' instantiates the vtable.
+// { dg-do compile }
+// { dg-options "-O -fno-implicit-templates" }
+
+template <class T> struct A {
+  virtual void f () { }
+};
+inline template struct A<int>;
+
+// { dg-final { scan-assembler "\n_?_ZTV1AIiE(:|\n)" } }
+A<int> a;
+
+// { dg-final { scan-assembler-not "\n_?_ZTV1AIcE(:|\n)" } }
+A<char> b;
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C b/gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C
deleted file mode 100644 (file)
index 8052332..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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 <class T> struct A {
-  static T t;
-};
-template <class T> T A<T>::t = 0;
-static template struct A<int>;
-
-// These functions must be defined in a single line, so that, even if
-// constants or pointers are placed in the code section (for example,
-// on the SH), we still get the same line numbers.
-
-void test_int() { A<int>::t = 42; } // gets bogus error
-
-void test_char() { A<char>::t = 42; } // ERROR - not instantiated XFAIL *-*-irix* *-*-hpux*
-// Irix's default linker does not produce line numbers so XFAIL it.
-// Similarly for HP's linker
-
-int main ()
-{
-  test_int ();
-  test_char ();
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C b/gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C
deleted file mode 100644 (file)
index f3149d1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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 <class T> struct A {
-  virtual void f () { }
-};
-inline template struct A<int>;
-
-A<int> a;                      // gets bogus error
-A<char> b;                     // ERROR - not instantiated XFAIL mips*-*-* *-*-hpux* i?86-pc-cygwin
-                               // Irix's default linker does not
-                               // produce line numbers so XFAIL it.
-                               // Similarly for HPUX.
-
-int main ()
-{
-}