gfortran links to bug lists
Janne Blomqvist
blomqvist.janne@gmail.com
Thu Jul 19 15:35:00 GMT 2007
On 7/19/07, Tobias Schlüter <Tobias.Schlueter@physik.uni-muenchen.de> wrote:
> Paul mentioned this upthread, and I'm not sure if one should call this
> "corner cases" and "bugs", or simply "major design definciency" that
> leads to "unimplemented F95 features", but since it seems to somehow
> have escaped the discussion: our array descriptor format doesn't allow
> implementation of the whole of Fortran 95, because the strides are not
> byte-sized. Bug reports due to this are e.g. PRs 29396 and 30625.
Byte-sized descriptors could probably be used to fix that, yes.
Probably 21881 as well, since we could then discard the size encoded
in the descriptor and just the stride directly instead of stride*size
to jump to the next element. Although the size might be needed for
other things, so perhaps a separate element is still needed in the
descriptor
However, I wonder if this will cause a problem for the middle-end.
E.g. can the vectorizer see that elements "n" and "n+sizeof(foo)" are
adjacent?
While we're on the topic of arrays, one thing that I suppose "should"
be done eventually, is the representation of multidimensional arrays.
Apparently we're missing out on some fancy middle-end optimizations by
having the frontend flatten the arrays. It also makes it difficult to
represent debugging information sensibly.
On a more philosophical note, other implementations I'm aware of
(intel, pathscale) use (lbound, stride, extent) triples for describing
each dimension in the descriptor rather than (lbound, stride, ubound)
like we do. Though I can't see any reason why one would be better than
the other.
Finally it seems none of this is a problem with DWARF, with the
exception of the aforementioned flattened multidimensional arrays.
DWARF3 does seem to have decent F95 support, even including explicit
support for allocatable and pointer arrays, and ways to describe the
descriptor. There is DW_AT_byte_stride to specify that descriptors
use bytes rather than sizeof(type), and DW_AT_upper_bound or
DW_AT_count depending on whether the descriptor contains ubound or
extent information.
http://dwarfstd.org/Dwarf3.pdf
> > (Dissertation to the committee three days ago; defense next week....)
>
> Congrats on the first part, good luck for the second.
Likewise.
--
Janne Blomqvist
More information about the Fortran
mailing list