From b9c87401ae95e5b970c32a854adbb154951551f3 Mon Sep 17 00:00:00 2001 From: Steven Bosscher Date: Sat, 6 Sep 2003 15:44:34 +0000 Subject: re PR c++/11595 (crash on duplicate label definition) PR c++/11595 * decl.c (define_label): Remove unreachable timevar pop. Always return the decl, even if the definition is invalid. From-SVN: r71138 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl.c | 11 ++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4926d58..49782e3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-09-06 Steven Bosscher + + PR c++/11595 + * decl.c (define_label): Remove unreachable timevar pop. + Always return the decl, even if the definition is invalid. + 2003-09-06 Nathan Sidwell PR c++/12167 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 1575ec4..c11a7c5 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4937,8 +4937,7 @@ check_goto (tree decl) } /* Define a label, specifying the location in the source file. - Return the LABEL_DECL node for the label, if the definition is valid. - Otherwise return 0. */ + Return the LABEL_DECL node for the label. */ tree define_label (location_t location, tree name) @@ -4961,10 +4960,7 @@ define_label (location_t location, tree name) pedwarn ("label named wchar_t"); if (DECL_INITIAL (decl) != NULL_TREE) - { - error ("duplicate label `%D'", decl); - POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE); - } + error ("duplicate label `%D'", decl); else { /* Mark label as having been defined. */ @@ -4977,9 +4973,10 @@ define_label (location_t location, tree name) ent->binding_level = current_binding_level; } check_previous_gotos (decl); - POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl); } + timevar_pop (TV_NAME_LOOKUP); + return decl; } struct cp_switch -- cgit v1.1