https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59104
Paul Thomas <pault at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pault at gcc dot gnu.org
--- Comment #4 from Paul Thomas <pault at gcc dot gnu.org> ---
The problem lies in gfc_conv_expr_descriptor, as the following demonstrates:
module m1
implicit none
integer, parameter :: dp = kind([double precision::])
contains
function f(x)
integer, intent(in) :: x
real(dp) f(x/2)
integer y(size(f)+1)
write(*,*) 'size(f) = ',size(f)
write(*,*) 'size(y) = ',my_size(y)
f = 0
end function f
integer function my_size (arg)
integer :: arg(:)
my_size = size(arg)
end
end module m1
program bug3
use m1
implicit none
real y
y = sum(f(2))
end program bug3
In both this and the original testcase, the result depends ultimately on a
'ubound.x' that has not been set.
I am not sure that I understand why explicit shape arrays are being handled
this way in size, when all the information needed is present in the array_spec.
However, the passing of an incorrect descriptor to 'my_size' has to be fixed.
Cheers
Paul