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
This commit is contained in:
Tobias Schlüter 2004-05-14 15:46:05 +02:00 committed by Tobias Schlüter
parent ee17cbda2e
commit 9b089e0545
4 changed files with 49 additions and 10 deletions

View File

@ -1,10 +1,16 @@
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
* parse.c (parse_interface): Allow empty INTERFACE, remove
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,
decl.c, dependency.c, dependency.h, dump-parse-tree.c, error.c,
@ -20,7 +26,7 @@
* data.c: Likewise, also removed two whitespace-only lines.
* 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
* trans-decl.c (generate_local_decl): Don't warn for unused

View File

@ -1203,6 +1203,10 @@ gfc_match_do (void)
if (gfc_match (" do") != MATCH_YES)
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.) */
if (gfc_match_eos () == MATCH_YES)
@ -1212,13 +1216,9 @@ gfc_match_do (void)
goto done;
}
m = gfc_match_st_label (&label, 0);
if (m == MATCH_ERROR)
goto cleanup;
gfc_match_char (',');
if (gfc_match ("% ") != MATCH_YES)
/* match an optional comma, if no comma is found a space is obligatory. */
if (gfc_match_char(',') != MATCH_YES
&& gfc_match ("% ") != MATCH_YES)
return MATCH_NO;
/* See if we have a DO WHILE. */

View File

@ -1,3 +1,8 @@
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

View File

@ -0,0 +1,28 @@
! 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