From ee5f962cc74153e35d21e87d5f8ae8e22e452b1b Mon Sep 17 00:00:00 2001 From: lerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 20 May 2001 13:22:24 +0000 Subject: [PATCH] 2001-05-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> * pt.c (determine_specialization): Ignore artificial functions. 2001-05-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> * g++.old-deja/g++.pt/spec41.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42342 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/pt.c | 3 +++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.old-deja/g++.pt/spec41.C | 10 ++++++++++ 4 files changed, 21 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec41.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 233f804fe7e2..42d2ae174a5c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2001-05-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + * pt.c (determine_specialization): Ignore artificial functions. + 2001-05-20 Neil Booth <neil@daikokuya.demon.co.uk> * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index c0cd2ebc42da..da0b0a664630 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1023,6 +1023,9 @@ determine_specialization (template_id, decl, targs_out, /* This is just an ordinary non-member function. Nothing can be a specialization of that. */ continue; + else if (DECL_ARTIFICIAL (fn)) + /* Cannot specialize functions that are created implicitly. */ + continue; else { tree decl_arg_types; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ac40b1441d2c..a39d8cca15c0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-05-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + * g++.old-deja/g++.pt/spec41.C: New test. + 2001-05-19 Joseph S. Myers <jsm28@cam.ac.uk> * gcc.c-torture/compile/20010114-1.x: Remove. diff --git a/gcc/testsuite/g++.old-deja/g++.pt/spec41.C b/gcc/testsuite/g++.old-deja/g++.pt/spec41.C new file mode 100644 index 000000000000..aab53c074c17 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/spec41.C @@ -0,0 +1,10 @@ +// Build don't link: + +// Origin: <mikes@nilenet.com> + +// Bug: Specialization of implicitly created function should be +// rejected. + +template<class T> class blah{}; +blah<char>::blah(){} // ERROR - invalid specialization +int main(){} -- GitLab