aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog15
-rw-r--r--gcc/fortran/io.c9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/io_invalid_1.f905
4 files changed, 29 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 55ba5ed..6750a13 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,13 +1,20 @@
+2005-07-03 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR fortran/20842
+ * io.c (match_dt_element): Do not allow END tag in PRINT or
+ WRITE statement.
+
2005-07-02 Joseph S. Myers <joseph@codesourcery.com>
* lang.opt: Remove "." from end of help texts.
2005-07-01 Jerry DeLisle <jvdelisle@verizon.net>
- * gfortran.texi: Fix typos and grammar.
- * invoke.texi: Fix typos and grammar.
- * intrinsic.texi: Add documentaion for eoshift, epsilon, etime, and exit.
- Fixed alignment of text for dtime syntax. Fixed a few line lengths.
+ * gfortran.texi: Fix typos and grammar.
+ * invoke.texi: Fix typos and grammar.
+ * intrinsic.texi: Add documentaion for eoshift, epsilon, etime, and
+ exit. Fixed alignment of text for dtime syntax. Fixed a few line
+ lengths.
2005-06-25 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index c5ceb06..ef51308 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -1643,7 +1643,14 @@ match_dt_element (io_kind k, gfc_dt * dt)
m = match_ltag (&tag_end, &dt->end);
if (m == MATCH_YES)
- dt->end_where = gfc_current_locus;
+ {
+ if (k == M_WRITE)
+ {
+ gfc_error ("END tag at %C not allowed in output statement");
+ return MATCH_ERROR;
+ }
+ dt->end_where = gfc_current_locus;
+ }
if (m != MATCH_NO)
return m;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5d94b11..203bd56 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-07-03 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR fortran/20842
+ * gfortran.dg/io_invalid_1.f90: New test.
+
2005-07-03 Joseph S. Myers <joseph@codesourcery.com>
* gcc.dg/format/gcc_diag-1.c: Update.
diff --git a/gcc/testsuite/gfortran.dg/io_invalid_1.f90 b/gcc/testsuite/gfortran.dg/io_invalid_1.f90
new file mode 100644
index 0000000..75a528b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/io_invalid_1.f90
@@ -0,0 +1,5 @@
+! { dg-do compile }
+! PR fortran/20842
+WRITE(UNIT=6,END=999) 0 ! { dg-error "END tag .* is not compatible with output" }
+999 CONTINUE
+END