This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gfortran links to bug lists


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]