diff options
author | Richard Henderson <rth@redhat.com> | 2002-03-27 17:52:55 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-03-27 17:52:55 -0800 |
commit | 1b58660a9d302afe516eca5023066585ae6ceb85 (patch) | |
tree | 734401ad3e345fed9d99a621834a4497df7065b9 | |
parent | 55a2ea2a340cd1d029b8025dd58695703a4e18f0 (diff) | |
download | gcc-1b58660a9d302afe516eca5023066585ae6ceb85.zip gcc-1b58660a9d302afe516eca5023066585ae6ceb85.tar.gz gcc-1b58660a9d302afe516eca5023066585ae6ceb85.tar.bz2 |
instantiate1.C: Use scan-assembler, not link errors.
* 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/.
From-SVN: r51491
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/instantiate1.C | 18 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/instantiate2.C | 15 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/instantiate3.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C | 27 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C | 20 |
6 files changed, 40 insertions, 60 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f660231..5cf5780 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. diff --git a/gcc/testsuite/g++.dg/ext/instantiate1.C b/gcc/testsuite/g++.dg/ext/instantiate1.C index 90a4af0..04d7400 100644 --- a/gcc/testsuite/g++.dg/ext/instantiate1.C +++ b/gcc/testsuite/g++.dg/ext/instantiate1.C @@ -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 index 0000000..c812dba --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/instantiate2.C @@ -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 index 0000000..c0f61fc --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/instantiate3.C @@ -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 index 8052332..0000000 --- a/gcc/testsuite/g++.old-deja/g++.ext/instantiate2.C +++ /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 index f3149d1..0000000 --- a/gcc/testsuite/g++.old-deja/g++.ext/instantiate3.C +++ /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 () -{ -} |