https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86545
--- Comment #1 from janus at gcc dot gnu.org --- I guess the problem is the absence of the error message that one gets when calling the specific function directly, without going through the generic interface: write(*,*) trim_string(s) ! correctly rejected 1 Error: Data transfer element at (1) cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure Possibly the resolution of the interface comes too late, so that we fail to detect that the function results a derived type?