diff options
author | Steven G. Kargl <kargls@comcast.net> | 2005-06-20 19:17:32 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2005-06-20 19:17:32 +0000 |
commit | cb1d4dce1537ed3479037e8d0f0bf114d5d27441 (patch) | |
tree | 177fdc29aa2e55a7d1462a1b7a3f424f4da2d8d3 /gcc/fortran/match.c | |
parent | 8c98e9d03d115da3dd1c238e7a24ad643aacf148 (diff) | |
download | gcc-cb1d4dce1537ed3479037e8d0f0bf114d5d27441.zip gcc-cb1d4dce1537ed3479037e8d0f0bf114d5d27441.tar.gz gcc-cb1d4dce1537ed3479037e8d0f0bf114d5d27441.tar.bz2 |
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
Diffstat (limited to 'gcc/fortran/match.c')
-rw-r--r-- | gcc/fortran/match.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 0592b1e..e8c4661 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; } |