This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch, gfortran.dg] Make namelist_15.f90 use legal namelist file.
- From: Jerry DeLisle <jvdelisle at verizon dot net>
- To: Fortran List <fortran at gcc dot gnu dot org>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 06 Oct 2007 08:29:44 -0700
- Subject: [patch, gfortran.dg] Make namelist_15.f90 use legal namelist file.
Hi,
I plan to commit the attached patch if no objections. The namelist file used
for the test has illegal object specifiers. Only one non-zero rank specifier is
permitted. Also the standard requires that substring specifiers be complete,
meaning one of the three forms:
(j:j)
(:j)
(j:)
This revised test case now passes all compilers we tested, xlf, sun, ifort, g95,
gfortran. (I also removed some leftover debug code and re-enabled the abort)
Thanks to Dominique for pointing this out and assisting with testing.
Regards,
Jerry
Index: namelist_15.f90
===================================================================
--- namelist_15.f90 (revision 129029)
+++ namelist_15.f90 (working copy)
@@ -24,15 +24,19 @@ program namelist_15
write (10, '(A)') "&MYNML"
write (10, '(A)') " x = 3, 4, 'dd', 'ee', 'ff', 'gg',"
write (10, '(A)') " 4, 5, 'hh', 'ii', 'jj', 'kk',"
- write (10, '(A)') " x%i = , ,-3, -4"
- write (10, '(A)') " x(2)%m(1)%ch(2) ='q',"
- write (10, '(A)') " x(2)%m(2)%ch(1)(1) ='w',"
- write (10, '(A)') " x%m%ch(:)(2) = 'z','z','z','z','z','z','z','z',"
- write (10, '(A)') "&end"
+ write (10, '(A)') " x(1)%i = , ,"
+ write (10, '(A)') " x(2)%i = -3, -4"
+ write (10, '(A)') " x(2)%m(1)%ch(2)(1:1) ='q',"
+ write (10, '(A)') " x(2)%m(2)%ch(1)(1:1) ='w',"
+ write (10, '(A)') " x(1)%m(1)%ch(1:2)(2:2) = 'z','z',"
+ write (10, '(A)') " x(2)%m(1)%ch(1:2)(2:2) = 'z','z',"
+ write (10, '(A)') " x(1)%m(2)%ch(1:2)(2:2) = 'z','z',"
+ write (10, '(A)') " x(2)%m(2)%ch(1:2)(2:2) = 'z','z',"
+ write (10, '(A)') "/"
rewind (10)
read (10, nml = mynml, iostat = ier)
- if (ier .ne. 0) print *, 'First read.' !call abort ()
+ if (ier .ne. 0) call abort ()
close (10)
open (10, status = "scratch", delim='apostrophe')
@@ -40,7 +44,7 @@ program namelist_15
rewind (10)
read (10, nml = mynml, iostat = ier)
- if (ier .ne. 0) print *, 'Second read.' !call abort ()
+ if (ier .ne. 0) call abort ()
close(10)
if (.not. ((x(1)%i(1) == 3) .and. &