Commit 9b089e05 by Tobias Schlüter Committed by Tobias Schlüter

re PR fortran/14066 (Infinite DO loops not recognized.)

fortran:
        PR fortran/14066
* match.c (gfc_match_do): Allow infinite loops with
label-do-stmt. Do not enforce space after comma.

testsuite:

PR fortran/14066
* gfortran.fortran-torture/compile/do_1.f90: New test.

Also fixed date on previous ChangeLog entries.

From-SVN: r81842
parent ee17cbda
2004-05-08 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/14066
* match.c (gfc_match_do): Allow infinite loops with
label-do-stmt. Do not enforce space after comma.
2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/15051 PR fortran/15051
* parse.c (parse_interface): Allow empty INTERFACE, remove * parse.c (parse_interface): Allow empty INTERFACE, remove
seen_body. seen_body.
2004-05-08 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* Make-lang.in, arith.c, arith.h, array.c, bbt.c, check.c, * Make-lang.in, arith.c, arith.h, array.c, bbt.c, check.c,
decl.c, dependency.c, dependency.h, dump-parse-tree.c, error.c, decl.c, dependency.c, dependency.h, dump-parse-tree.c, error.c,
...@@ -20,7 +26,7 @@ ...@@ -20,7 +26,7 @@
* data.c: Likewise, also removed two whitespace-only lines. * data.c: Likewise, also removed two whitespace-only lines.
* gfortranspec.c, lang.opt: Update copyright years. * gfortranspec.c, lang.opt: Update copyright years.
2004-04-22 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/14568 PR fortran/14568
* trans-decl.c (generate_local_decl): Don't warn for unused * trans-decl.c (generate_local_decl): Don't warn for unused
......
...@@ -1203,6 +1203,10 @@ gfc_match_do (void) ...@@ -1203,6 +1203,10 @@ gfc_match_do (void)
if (gfc_match (" do") != MATCH_YES) if (gfc_match (" do") != MATCH_YES)
return MATCH_NO; return MATCH_NO;
m = gfc_match_st_label (&label, 0);
if (m == MATCH_ERROR)
goto cleanup;
/* Match an infinite DO, make it like a DO WHILE(.TRUE.) */ /* Match an infinite DO, make it like a DO WHILE(.TRUE.) */
if (gfc_match_eos () == MATCH_YES) if (gfc_match_eos () == MATCH_YES)
...@@ -1212,13 +1216,9 @@ gfc_match_do (void) ...@@ -1212,13 +1216,9 @@ gfc_match_do (void)
goto done; goto done;
} }
m = gfc_match_st_label (&label, 0); /* match an optional comma, if no comma is found a space is obligatory. */
if (m == MATCH_ERROR) if (gfc_match_char(',') != MATCH_YES
goto cleanup; && gfc_match ("% ") != MATCH_YES)
gfc_match_char (',');
if (gfc_match ("% ") != MATCH_YES)
return MATCH_NO; return MATCH_NO;
/* See if we have a DO WHILE. */ /* See if we have a DO WHILE. */
......
2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/14066
* gfortran.fortran-torture/compile/do_1.f90: New test.
2004-05-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/15051 PR fortran/15051
* gfortran.fortran-torture/compile/empty_interface_1.f90: New * gfortran.fortran-torture/compile/empty_interface_1.f90: New
test. test.
......
! test various forms of the DO statement
! inspired by PR14066
LOGICAL L
DO i=1,10
END DO
DO 10 i=1,20
DO 20,j=1,10,2
20 CONTINUE
10 END DO
L = .TRUE.
DO WHILE(L)
L = .FALSE.
END DO
DO 50 WHILE(.NOT.L)
L = .TRUE.
50 CONTINUE
DO
DO 30
DO 40
40 CONTINUE
30 END DO
END DO
outer: DO i=1,20
inner: DO,j=i,30
IF (j.EQ.2*i) CYCLE outer
END DO inner
END DO outer
END
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment