From 0f3744f8c2816d6f681b7b93784c634e1f8f34c2 Mon Sep 17 00:00:00 2001 From: Volker Reichelt Date: Tue, 22 Mar 2005 14:44:10 +0000 Subject: [PATCH] re PR c++/20499 (ICE on duplicate class definition) PR c++/20499 * parser.c (cp_parser_class_head): Return NULL_TREE when encountering a redefinition. * g++.dg/parse/error16.C: Tweak error markers. From-SVN: r96870 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/parser.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/parse/error16.C | 4 ++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ddac9f88769..bb0c547eeb8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-03-22 Volker Reichelt + + PR c++/20499 + * parser.c (cp_parser_class_head): Return NULL_TREE when + encountering a redefinition. + 2005-03-22 Nathan Sidwell PR c++/20465 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 6df7bad1d81..a6145406de9 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -12858,7 +12858,8 @@ cp_parser_class_head (cp_parser* parser, { error ("redefinition of %q#T", type); cp_error_at ("previous definition of %q#T", type); - type = error_mark_node; + type = NULL_TREE; + goto done; } /* We will have entered the scope containing the class; the names of diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 896052860af..3909d568423 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-03-22 Volker Reichelt + + PR c++/20499 + * g++.dg/parse/error16.C: Tweak error markers. + 2005-03-22 Jakub Jelinek PR target/20561 diff --git a/gcc/testsuite/g++.dg/parse/error16.C b/gcc/testsuite/g++.dg/parse/error16.C index afc790e072e..3dc58ad53c0 100644 --- a/gcc/testsuite/g++.dg/parse/error16.C +++ b/gcc/testsuite/g++.dg/parse/error16.C @@ -2,7 +2,7 @@ struct A { - struct B {}; // { dg-error "" } + struct B {}; // { dg-error "previous" } }; -struct A::B{}; // { dg-error "" } +struct A::B{}; // { dg-error "redefinition" } -- 2.30.2