diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/fortran/parse.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr17708.f90 | 9 |
4 files changed, 32 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c0b6d15..249e112 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -12,6 +12,19 @@ * iresolve.c (gfc_resolve_mvbits): New function. (gfc_resolve_random_number): Remove empty line at end of function. + * trans-const.c (gfc_build_cstring_const): New function. + (gfc_init_cst): Use new function. + * trans-const.h (gfc_build_cstring_const): Add prototype. + * trans-io.c (set_string, set_error_locus): Use new function. + * trans-stmt.c (gfc_trans_goto): Use new function. + + 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. + + 2004-10-04 Erik Schnetter <schnetter@aei.mpg.de> * scanner.c (preprocessor_line): Accept preprocessor lines without 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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6bb5309d..a4575e9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -6,6 +6,9 @@ PR fortran/17631 * gfortran.fortran-torture/execute/intrinsic_mvbits.f90: New test. + PR fortran/17708 + * gfortran.dg/pr17708.f90: New test. + 2004-10-04 Chao-ying Fu <fu@mips.com> * gcc.dg/vect/pr16105.c: Enable for mipsisa64*-*-*. diff --git a/gcc/testsuite/gfortran.dg/pr17708.f90 b/gcc/testsuite/gfortran.dg/pr17708.f90 new file mode 100644 index 0000000..7485da8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr17708.f90 @@ -0,0 +1,9 @@ +! { dg-do run } + program test + j = 0 + do 10 i=1,3 + if(i == 2) goto 10 ! { dg-warning "" "" } + j = j+1 +10 enddo + if (j/=2) call abort + end |