From cb1d4dce1537ed3479037e8d0f0bf114d5d27441 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Mon, 20 Jun 2005 19:17:32 +0000 Subject: [PATCH] re PR fortran/21257 ([4.0 only] Duplicate use of construct name) PR fortran/21257 (Ported from g95) * match.c (gfc_match_label): Detect duplicate labels. From-SVN: r101214 --- gcc/fortran/ChangeLog | 9 ++++++++- gcc/fortran/match.c | 20 ++++++++------------ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ab04c0b1c18..da57e97dfc9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,4 +1,11 @@ -2005-06-20 Erik Edelmann +2005-06-20 Steven G. Kargl * intrinsic.c (check_intrinsic_standard): Fix spelling error in a warning message. diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 0592b1e974b..e8c4661e992 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -250,7 +250,6 @@ match gfc_match_label (void) { char name[GFC_MAX_SYMBOL_LEN + 1]; - gfc_state_data *p; match m; gfc_new_block = NULL; @@ -265,18 +264,15 @@ gfc_match_label (void) return MATCH_ERROR; } - if (gfc_new_block->attr.flavor != FL_LABEL - && gfc_add_flavor (&gfc_new_block->attr, FL_LABEL, - gfc_new_block->name, NULL) == FAILURE) - return MATCH_ERROR; + if (gfc_new_block->attr.flavor == FL_LABEL) + { + gfc_error ("Duplicate construct label '%s' at %C", name); + return MATCH_ERROR; + } - for (p = gfc_state_stack; p; p = p->previous) - if (p->sym == gfc_new_block) - { - gfc_error ("Label %s at %C already in use by a parent block", - gfc_new_block->name); - return MATCH_ERROR; - } + if (gfc_add_flavor (&gfc_new_block->attr, FL_LABEL, + gfc_new_block->name, NULL) == FAILURE) + return MATCH_ERROR; return MATCH_YES; } -- 2.30.2