This one turned up during my testing of SPREAD on wide character strings, but
it turns out that it already happens on default character variables. It looks
like the front-end doesn't fill the return array descriptor well.
$ cat k2.f90
implicit none
character(len=5), dimension(3,3), parameter :: &
p = reshape(["", "", "", "", "", "", "", "", ""], [3,3])
character(len=5), dimension(3,3) :: m1
m1 = p
if (any (spread (p, 1, 2) /= spread (m1, 1, 2))) call abort
end
$ gfortran k2.f90 && ./a.out
Fortran runtime error: rank mismatch in spread()
The most amazing is that it's specific to character variables (ie it doesn't
happen with integer, for example).
--
Summary: SPREAD gives wrong results with CHARACTER variables
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: fxcoudert at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36257