summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-28 21:59:20 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-28 21:59:20 +0000
commit65df050ec6ceec3134968a00ef7d142c695b1d11 (patch)
treeba7ef9bb4fd32b31cbf588ec8e9091a49ccfa142
parent64c79f42958048e796444491ed2be87aa4462590 (diff)
downloadppe42-gcc-65df050ec6ceec3134968a00ef7d142c695b1d11.tar.gz
ppe42-gcc-65df050ec6ceec3134968a00ef7d142c695b1d11.zip
fortran/
2006-10-28 Tobias Burnus <burnus@net-b.de> PR fortran/28224 * io.c (check_io_constraints): Allow namelists for internal files for Fortran 2003. testsuite/ 2006-10-28 Tobias Burnus <burnus@net-b.de> PR fortran/28224 * gfortran.dg/io_constraints_2.f90: Use -std=f95. * gfortran.dg/namelist_internal.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118113 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/io.c10
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gfortran.dg/io_constraints_2.f903
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_internal.f9021
5 files changed, 43 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8ff4a5fff56..e5540e026a6 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-10-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/28224
+ * io.c (check_io_constraints): Allow namelists
+ for internal files for Fortran 2003.
+
2006-10-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/27954
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index d4897694bbd..cbb7cf90b06 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -2596,9 +2596,13 @@ if (condition) \
"REC tag at %L is incompatible with internal file",
&dt->rec->where);
- io_constraint (dt->namelist != NULL,
- "Internal file at %L is incompatible with namelist",
- &expr->where);
+ if (dt->namelist != NULL)
+ {
+ if (gfc_notify_std(GFC_STD_F2003,
+ "Internal file at %L is incompatible with namelist",
+ &expr->where) == FAILURE)
+ m = MATCH_ERROR;
+ }
io_constraint (dt->advance != NULL,
"ADVANCE tag at %L is incompatible with internal file",
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e93c33825a2..ca0f3127fd5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,4 +1,10 @@
-2006-10-28 Tobias Burnus <burnus@net-b.de>
+2006-10-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/28224
+ * gfortran.dg/io_constraints_2.f90: Use -std=f95.
+ * gfortran.dg/namelist_internal.f90: New test.
+
+2006-10-28 Tobias Burnus <burnus@net-b.de>
PR fortran/29625
* gfortran.dg/io_real_boz.f90: Add.
diff --git a/gcc/testsuite/gfortran.dg/io_constraints_2.f90 b/gcc/testsuite/gfortran.dg/io_constraints_2.f90
index c2a49e29d16..0b2c2049adf 100644
--- a/gcc/testsuite/gfortran.dg/io_constraints_2.f90
+++ b/gcc/testsuite/gfortran.dg/io_constraints_2.f90
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-options "-std=f95" }
! Part II of the test of the IO constraints patch, which fixes PRs:
! PRs 25053, 25063, 25064, 25066, 25067, 25068, 25069, 25307 and 20862.
! Modified2006-07-08 to check the patch for PR20844.
@@ -35,7 +36,7 @@ end module global
write(*, NML=NL) z ! { dg-error "followed by IO-list" }
!Was correctly picked up before patch.
- print NL, z ! { dg-error "followed by IO-list" }
+ print NL, z ! { dg-error "PRINT namelist at \\(1\\) is an extension" }
!
! Not allowed with internal unit
!Was correctly picked up before patch.
diff --git a/gcc/testsuite/gfortran.dg/namelist_internal.f90 b/gcc/testsuite/gfortran.dg/namelist_internal.f90
new file mode 100644
index 00000000000..4f8aeb2272d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/namelist_internal.f90
@@ -0,0 +1,21 @@
+! { dg-do run }
+! { dg-options "-fall-intrinsics -std=f2003" }
+! Checks internal file read/write of namelists
+! (Fortran 2003 feature)
+! PR fortran/28224
+program nml_internal
+ integer :: i, j
+ real :: r
+ namelist /nam/ i, j, r
+ character(len=250) :: str
+
+ i = 42
+ j = -718
+ r = exp(1.0)
+ write(str,nml=nam)
+ i = -33
+ j = 10
+ r = sin(1.0)
+ read(str,nml=nam)
+ if(i /= 42 .or. j /= -718 .or. abs(r-exp(1.0)) > 1e-5) call abort()
+end program nml_internal
OpenPOWER on IntegriCloud