diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2003-09-06 15:44:34 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2003-09-06 15:44:34 +0000 |
commit | b9c87401ae95e5b970c32a854adbb154951551f3 (patch) | |
tree | 78a855038664b00d74ef9e6d943946875e5047f4 /gcc | |
parent | d85a0aae6d490c98756dee915631a41cc3bab370 (diff) | |
download | gcc-b9c87401ae95e5b970c32a854adbb154951551f3.zip gcc-b9c87401ae95e5b970c32a854adbb154951551f3.tar.gz gcc-b9c87401ae95e5b970c32a854adbb154951551f3.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | 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 <steven@gcc.gnu.org> + + 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 <nathan@codesourcery.com> 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 |