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