[Patch, fortran] PR24174 real(10) and complex(10) array IO broken.

Janne Blomqvist jblomqvi@cc.hut.fi
Tue Oct 25 06:16:00 GMT 2005


PING**2

On Tue, Oct 18, 2005 at 08:56:25PM +0300, Janne Blomqvist wrote:
> On Tue, Oct 18, 2005 at 08:05:04AM +0200, FX Coudert wrote:
> > I unfortunately don't have time to review this patch, but...
> > 
> > >>! { dg-do run }
> > 
> > You should make this conditionnal on effective target fortran_large_real.
> > 
> > ! { dg-do run }
> > ! { dg-require-effective-target fortran_large_real }
> > 
> > >> real(kind=10) :: a,b(2), c
> > >> complex(kind=10) :: d, e, f(2)
> > 
> > And then declare those as
> > 
> >   integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1)
> > 
> >   real(kind=k) :: a,b(2),c
> >   complex(kind=k) :: d,e,f(2)
> 
> Ok, here is an updated testcase.
> 
> 
> -- 
> Janne Blomqvist

> ! { dg-do run }
> ! { dg-require-effective-target fortran_large_real }
> ! PR 24174
> program kind10_formatted_io
>   ! This should be kind=10 on systems that support it
>   integer, parameter :: k = selected_real_kind (precision (0.0_8) + 1)
>   real(kind=k) :: a,b(2), c
>   complex(kind=k) :: d, e, f(2)
>   character(len=180) :: tmp
>   ! Test real(k) scalar and array formatted IO
>   b(:) = 2.0_k
>   write (tmp, *) b
>   read (tmp, *) a, c
>   if (a /= 2.0_k) call abort()
>   if (c /= 2.0_k) call abort()
>   ! Complex(k) scalar and array formatted and list formatted IO
>   f = cmplx ( 1.0_k, 2.0_k, k)
>   d = cmplx ( huge (1.0_k), huge (2.0_k), k)
>   write (tmp, *) d
> !  read (tmp, *) e ! List formatted read doesn't work.
> !  if (e /= d) call abort()
>   write (tmp, '(2(e12.4e5, 2x))') d
> !  read (tmp, '(2(e12.4e5, 2x))') e ! Read doesn't work either
> !  if (e /= d) call abort()
> end program kind10_formatted_io


-- 
Janne Blomqvist



More information about the Fortran mailing list