From: Volker Reichelt Date: Thu, 17 Aug 2006 08:55:17 +0000 (+0000) Subject: re PR c++/28710 (ICE redeclaring template as non-template) X-Git-Tag: releases/gcc-4.0.4~440 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=843787510664dfa0ca304867d039851d6a6795ad;p=thirdparty%2Fgcc.git re PR c++/28710 (ICE redeclaring template as non-template) PR c++/28710 * decl.c (xref_tag): Improve error message. Return early on error. * g++.dg/template/redecl4.C: New test. From-SVN: r116216 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 68c4707471d9..1dcbc7736cf1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-08-17 Volker Reichelt + + PR c++/28710 + * decl.c (xref_tag): Improve error message. Return early on error. + 2006-08-16 Volker Reichelt PR c++/28593 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 63b491c684b5..cddfcb2f7389 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9281,7 +9281,8 @@ xref_tag (enum tag_types tag_code, tree name, && CLASSTYPE_IS_TEMPLATE (t)) { error ("redeclaration of %qT as a non-template", t); - t = error_mark_node; + cp_error_at ("previous declaration %q+D", t); + POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); } /* Make injected friend class visible. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 04181f88d08c..291c55d68bfb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-08-17 Volker Reichelt + + PR c++/28710 + * g++.dg/template/redecl4.C: New test. + 2006-08-16 Volker Reichelt PR c++/28593 diff --git a/gcc/testsuite/g++.dg/template/redecl4.C b/gcc/testsuite/g++.dg/template/redecl4.C new file mode 100644 index 000000000000..9a4a9f366e9c --- /dev/null +++ b/gcc/testsuite/g++.dg/template/redecl4.C @@ -0,0 +1,5 @@ +// PR c++/28710 +// { dg-do compile } + +template union A; // { dg-error "previous" } +struct A; // { dg-error "non-template" }