diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2004-10-04 23:05:07 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-10-04 23:05:07 +0200 |
commit | 73a014b5498d4d6ea86796cca4a97973c9a847cd (patch) | |
tree | d335cf59454e85ebc15fc722bd176f05fc361eff /gcc/fortran/parse.c | |
parent | 95638988cb96e12a6472bfdde500fa5105d7c251 (diff) | |
download | gcc-73a014b5498d4d6ea86796cca4a97973c9a847cd.zip gcc-73a014b5498d4d6ea86796cca4a97973c9a847cd.tar.gz gcc-73a014b5498d4d6ea86796cca4a97973c9a847cd.tar.bz2 |
re PR fortran/17708 (gfortran problem with goto inside loop)
fortran/
PR fortran/17708
* parse.c (accept_statement): Don't treat END DO like END IF and
END SELECT.
(parse_do_block): Generate possible END DO label inside END DO
block.
also, added ChangeLog entry for previous commit.
testsuite/
PR fortran/17708
* gfortran.dg/pr17708.f90: New test.
From-SVN: r88529
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r-- | gcc/fortran/parse.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index cfcbee9..6f88aba 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -1033,7 +1033,6 @@ accept_statement (gfc_statement st) construct. */ case ST_ENDIF: - case ST_ENDDO: case ST_END_SELECT: if (gfc_statement_label != NULL) { @@ -2003,7 +2002,13 @@ loop: && s.ext.end_do_label != gfc_statement_label) gfc_error_now ("Statement label in ENDDO at %C doesn't match DO label"); - /* Fall through */ + + if (gfc_statement_label != NULL) + { + new_st.op = EXEC_NOP; + add_statement (); + } + break; case ST_IMPLIED_ENDDO: break; |