This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/34876] can't read zero length array sections
- From: "jvdelisle at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Jan 2008 02:56:56 -0000
- Subject: [Bug fortran/34876] can't read zero length array sections
- References: <bug-34876-15620@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from jvdelisle at gcc dot gnu dot org 2008-01-20 02:56 -------
Here is a reduced case that illustrates the problem. Not specifying the
negative stride in either the read or write results in a failure. See the
commented lines.
program qi0011
character(9) bda(10)
character(9) bda1(10)
integer j_len
istat = -314
inquire(iolength = j_len) bda1
print '("j_len=",i2)',j_len
istat = -314
open (unit=48,
$ access='direct',
$ recl = j_len,
$ status="scratch",
$ iostat = istat,
$ form='unformatted',
$ action='readwrite')
bda = 'xxxxxxxxx'
bda1 ='123456789'
write (48, rec = 10) bda1(4:3:-1)! This works
c write (48, rec = 10) bda1(4:3) ! This fails
read (48, rec=10) bda(7:6:-1) ! This works
c read (48, rec=10) bda(7:6) ! This fails
print '(10(a))', bda1
print '(10(a))', bda
end
Looking at -fdump-tree-original:
With stride given:
{
struct array1_unknown parm.9;
parm.9.dtype = 625;
parm.9.dim[0].lbound = 1;
parm.9.dim[0].ubound = 2;
parm.9.dim[0].stride = -1;
parm.9.data = (void *) (character(kind=1)[0:][1:9] *) &bda1[3];
parm.9.offset = 0;
_gfortran_transfer_array (&dt_parm.8, &parm.9, 1, 9);
}
Without stride given:
{
struct array1_unknown parm.9;
parm.9.dtype = 625;
parm.9.dim[0].lbound = 1;
parm.9.dim[0].ubound = 0;
parm.9.dim[0].stride = 1;
parm.9.data = (void *) (character(kind=1)[0:][1:9] *) &bda1[3];
parm.9.offset = -4;
_gfortran_transfer_array (&dt_parm.8, &parm.9, 1, 9);
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34876