Commit 72b572cb by Francois-Xavier Coudert Committed by François-Xavier Coudert

io.c (resolve_tag): Warn on non-default kind for NUMBER...

	* io.c (resolve_tag): Warn on non-default kind for NUMBER,
	NEXTREC, RECL, NAMED, OPENED and PENDING I/O specifiers.

	* gfortran.dg/io_constraints_11.f90: New file.
	* gfortran.dg/io_constraints_12.f90: New file.
	* gfortran.dg/io_constraints_13.f90: New file.

From-SVN: r211323
parent 7b11cab7
2014-06-06 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
* io.c (resolve_tag): Warn on non-default kind for NUMBER,
NEXTREC, RECL, NAMED, OPENED and PENDING I/O specifiers.
2014-06-06 Jakub Jelinek <jakub@redhat.com>
* dump-parse-tree.c (show_omp_namelist): Dump reduction
......
......@@ -1497,7 +1497,8 @@ resolve_tag (const io_tag *tag, gfc_expr *e)
return false;
}
if ((tag == &tag_iostat || tag == &tag_size || tag == &tag_iolength)
if ((tag == &tag_iostat || tag == &tag_size || tag == &tag_iolength
|| tag == &tag_number || tag == &tag_nextrec || tag == &tag_s_recl)
&& e->ts.kind != gfc_default_integer_kind)
{
if (!gfc_notify_std (GFC_STD_F2003, "Fortran 95 requires default "
......@@ -1505,9 +1506,11 @@ resolve_tag (const io_tag *tag, gfc_expr *e)
return false;
}
if (tag == &tag_exist && e->ts.kind != gfc_default_logical_kind)
if (e->ts.kind != gfc_default_logical_kind &&
(tag == &tag_exist || tag == &tag_named || tag == &tag_opened
|| tag == &tag_pending))
{
if (!gfc_notify_std (GFC_STD_F2008, "Nondefault LOGICAL "
if (!gfc_notify_std (GFC_STD_F2008, "Non-default LOGICAL kind "
"in %s tag at %L", tag->name, &e->where))
return false;
}
......
2014-06-06 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
* gfortran.dg/io_constraints_11.f90: New file.
* gfortran.dg/io_constraints_12.f90: New file.
* gfortran.dg/io_constraints_13.f90: New file.
2014-06-06 Uros Bizjak <ubizjak@gmail.com>
PR target/61423
......
! { dg-do compile }
! { dg-options "-std=f95" }
!
! Test our conformance to item 4.9 ("Kind type parameters of integer
! specifiers") of the Fortran 2003 status document at
! ftp://ftp.nag.co.uk/sc22wg5/N1551-N1600/N1579.pdf
!
! The non-default integer variables are allowed since Fortran 2003.
! The non-default logical variables are allowed since Fortran 2008.
integer(kind=8) :: i, j, k, n
logical(kind=8) :: l1, l2, l3
open(10, status="scratch", iostat=i) ! { dg-error "requires default INTEGER" }
backspace(10, iostat=i) ! { dg-error "requires default INTEGER" }
endfile(10, iostat=i) ! { dg-error "requires default INTEGER" }
rewind(10, iostat=i) ! { dg-error "requires default INTEGER" }
read(*, '(I2)', iostat=i) k ! { dg-error "requires default INTEGER" }
read(*, '(I2)', advance='no', size=j) k ! { dg-error "requires default INTEGER" }
inquire(iolength=i) "42" ! { dg-error "requires default INTEGER" }
inquire(10, iostat=i) ! { dg-error "requires default INTEGER" }
inquire(10, number=j) ! { dg-error "requires default INTEGER" }
inquire(10, recl=k) ! { dg-error "requires default INTEGER" }
inquire(10, nextrec=n) ! { dg-error "requires default INTEGER" }
inquire(10, exist=l1) ! { dg-error "Non-default LOGICAL kind" }
inquire(10, named=l3) ! { dg-error "Non-default LOGICAL kind" }
inquire(10, opened=l2) ! { dg-error "Non-default LOGICAL kind" }
inquire(10, pending=l2) ! { dg-error "Non-default LOGICAL kind" }
close(10, iostat=i) ! { dg-error "requires default INTEGER" }
end
! { dg-do compile }
! { dg-options "-std=f2003" }
!
! Test our conformance to item 4.9 ("Kind type parameters of integer
! specifiers") of the Fortran 2003 status document at
! ftp://ftp.nag.co.uk/sc22wg5/N1551-N1600/N1579.pdf
!
! The non-default integer variables are allowed since Fortran 2003.
! The non-default logical variables are allowed since Fortran 2008.
integer(kind=8) :: i, j, k, n
logical(kind=8) :: l1, l2, l3
open(10, status="scratch", iostat=i)
backspace(10, iostat=i)
endfile(10, iostat=i)
rewind(10, iostat=i)
read(*, '(I2)', iostat=i) k
read(*, '(I2)', advance='no', size=j) k
inquire(iolength=i) "42"
inquire(10, iostat=i)
inquire(10, number=j)
inquire(10, recl=k)
inquire(10, nextrec=n)
inquire(10, exist=l1) ! { dg-error "Non-default LOGICAL kind" }
inquire(10, named=l3) ! { dg-error "Non-default LOGICAL kind" }
inquire(10, opened=l2) ! { dg-error "Non-default LOGICAL kind" }
inquire(10, pending=l2) ! { dg-error "Non-default LOGICAL kind" }
close(10, iostat=i)
end
! { dg-do compile }
!
! Test our conformance to item 4.9 ("Kind type parameters of integer
! specifiers") of the Fortran 2003 status document at
! ftp://ftp.nag.co.uk/sc22wg5/N1551-N1600/N1579.pdf
!
! The non-default integer variables are allowed since Fortran 2003.
! The non-default logical variables are allowed since Fortran 2008.
integer(kind=8) :: i, j, k, n
logical(kind=8) :: l1, l2, l3
open(10, status="scratch", iostat=i)
backspace(10, iostat=i)
endfile(10, iostat=i)
rewind(10, iostat=i)
read(*, '(I2)', iostat=i) k
read(*, '(I2)', advance='no', size=j) k
inquire(iolength=i) "42"
inquire(10, iostat=i)
inquire(10, number=j)
inquire(10, recl=k)
inquire(10, nextrec=n)
inquire(10, exist=l1)
inquire(10, named=l3)
inquire(10, opened=l2)
inquire(10, pending=l2)
close(10, iostat=i)
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment