From 8185f617afa2f21e1804beb04998d40e87bdc19c Mon Sep 17 00:00:00 2001 From: tkoenig Date: Tue, 16 Aug 2005 20:26:04 +0000 Subject: [PATCH] 2005-08-16 Thomas Koenig PR libfortran/23428 * io/transfer.c (iolength_transfer): Remove __attribute__ ((unused)) from type. Return correct length for inquire(iolength=) for complex variables. 2005-08-16 Thomas Koenig PR libfortran/23428 * gfortran.dg/inquire-complex.f90: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103168 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/inquire-complex.f90 | 13 +++++++++++++ libgfortran/ChangeLog | 7 +++++++ libgfortran/io/transfer.c | 10 +++++++--- 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/inquire-complex.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 75ab35f6963..179e2dc99b5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-08-16 Thomas Koenig + + PR libfortran/23428 + * gfortran.dg/inquire-complex.f90: New test case. + 2005-08-16 James E Wilson PR tree-optimization/21105 diff --git a/gcc/testsuite/gfortran.dg/inquire-complex.f90 b/gcc/testsuite/gfortran.dg/inquire-complex.f90 new file mode 100644 index 00000000000..188c932084c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/inquire-complex.f90 @@ -0,0 +1,13 @@ +! { dg-do run } +! PR 23428: Inquire(iolength) used to give the wrong result. +program main + implicit none + integer s4, s8 + + complex(kind=8) c8 + complex(kind=4) c4 + + inquire (iolength=s) c8 + if (s4 /= 8 .or. s8 /= 16) call abort + +end program main diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 223567c7c42..7ed94299cdc 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,10 @@ +2005-08-16 Thomas Koenig + + PR libfortran/23428 + * io/transfer.c (iolength_transfer): Remove __attribute__ ((unused)) + from type. Return correct length for inquire(iolength=) + for complex variables. + 2005-08-11 Francois-Xavier Coudert Steven Bosscher diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 00e8c3101d1..03708f84da1 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -1536,12 +1536,16 @@ finalize_transfer (void) data transfer, it just updates the length counter. */ static void -iolength_transfer (bt type __attribute__ ((unused)), - void *dest __attribute__ ((unused)), +iolength_transfer (bt type , void *dest __attribute__ ((unused)), int len) { if (ioparm.iolength != NULL) - *ioparm.iolength += len; + { + if (type == BT_COMPLEX) + *ioparm.iolength += 2*len; + else + *ioparm.iolength += len; + } } -- 2.11.4.GIT