https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117842
Bug ID: 117842
Summary: Function wrongly returning empty character string if
allocated on the heap
Product: gcc
Version: 14.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: alexandre.poux at coria dot fr
Target Milestone: ---
The following code is working as expected, unless I'm using
-fmax-stack-var-size=0 with gfortran 12.3, 13.3 or 14.2.1. In which case, the
function returns an empty string.
program test_clean_str
implicit none
character(len=100) :: input_str
character(len=:), allocatable :: result_str
input_str = ' Test String '
result_str = clean_str(input_str)
print *, 'Result:-', result_str,"-"
contains
function clean_str(str_in) result(str_out)
implicit none
character(len=*), intent(in) :: str_in
character(len=:), allocatable :: str_out
str_out = trim(str_in)
print*,"-",str_out,"-"
end function clean_str
end program test_clean_str
This change of behavior does not occur if the function is rewritten as a
subroutine or if I'm working with integer arrays instead of character string.
I've tested gfortran 12.3 13.3 and 14.2.1 on an up to date Arch Linux.