https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102510

--- Comment #4 from Dalon Work <dwwork at gmail dot com> ---
No, I don't think there is more to expect. My mistaken assumption was that the
return value of the function had to be a contiguous array of 8 elements. I
don't find this to be a stupid assumption, since the declaration looks so
similar to that of the dummy arguments. See:

function add2vecs2(a,b)
    use iso_fortran_env, only: r32 => real32
    real(r32), dimension(8), intent(in) :: a,b
    real(r32), dimension(8) :: add2vecs2 ! Basically the same as the prev line
    add2vecs2 = a + b
end function


But, as I've been informed, that is not the case. Apparently nothing enforces
this "contiguous" restriction on function array return values, and so gfortran
has taken the liberty of constructing an array descriptor instead. It's good to
know that when given more information, inlining is able to figure that out, but
when compiled in isolation, the function needs to check the array descriptor.

I'm satisfied with the answers here, so if you want to close it as not a bug,
I'm okay with that.

Thanks for the help.

Dalon

Reply via email to