aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog13
-rw-r--r--gcc/fortran/parse.c9
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gfortran.dg/pr17708.f909
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