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:
parent
ee17cbda2e
commit
9b089e0545
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue