aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2008-01-06 10:21:27 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2008-01-06 10:21:27 +0100
commit89c32b0f910eab73ae654213a67421ddd1091af4 (patch)
tree96ee2563013e8fb4de2f525f768253bfefd90957
parent242633d6eabe8e1a4f1a339c38e6e6a6f4ceb67e (diff)
downloadgcc-89c32b0f910eab73ae654213a67421ddd1091af4.zip
gcc-89c32b0f910eab73ae654213a67421ddd1091af4.tar.gz
gcc-89c32b0f910eab73ae654213a67421ddd1091af4.tar.bz2
re PR fortran/34654 (no unformatted on internal file)
2008-01-06 Tobias Burnus <burnus@net-b.de> PR fortran/34654 * io.c (check_io_constraints): Disallow unformatted I/O for internal units. 2008-01-06 Tobias Burnus <burnus@net-b.de> PR fortran/34654 * gfortran.dg/internal_io_unf.f90: New. From-SVN: r131350
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/io.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/internal_io_unf.f9011
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 950a0ee..2fccd48 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
2008-01-06 Tobias Burnus <burnus@net-b.de>
+ PR fortran/34654
+ * io.c (check_io_constraints): Disallow unformatted I/O for
+ internal units.
+
+2008-01-06 Tobias Burnus <burnus@net-b.de>
+
PR fortran/34660
* resolve.c (resolve_formal_arglist): Reject dummy procedure in
ELEMENTAL functions.
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index bb4295b..0bff511 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -2669,6 +2669,11 @@ if (condition) \
"REC tag at %L is incompatible with internal file",
&dt->rec->where);
+ io_constraint (dt->format_expr == NULL && dt->format_label == NULL
+ && dt->namelist == NULL,
+ "Unformatted I/O not allowed with internal unit at %L",
+ &dt->io_unit->where);
+
if (dt->namelist != NULL)
{
if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Internal file "
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5036598..b456bba 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2008-01-06 Tobias Burnus <burnus@net-b.de>
+ PR fortran/34654
+ * gfortran.dg/internal_io_unf.f90: New.
+
+2008-01-06 Tobias Burnus <burnus@net-b.de>
+
PR fortran/34660
* gfortran.dg/elemental_args_check_2.f90: New.
diff --git a/gcc/testsuite/gfortran.dg/internal_io_unf.f90 b/gcc/testsuite/gfortran.dg/internal_io_unf.f90
new file mode 100644
index 0000000..227b026
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/internal_io_unf.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+!
+! PR fortran/34654
+!
+! Disallow unformatted write to internal unit.
+! Test case was contributed by Joost VandeVondele.
+!
+implicit none
+CHARACTER :: a(3)
+WRITE(a) 0 ! { dg-error "Unformatted I/O not allowed with internal unit" }
+END