https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97768
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- If in the testcase I change the penultimate line to: l = 32 .in. to_upper(str) so that an error is emitted, the 64-bit little-endian f951 emits: Error: Operands of user operator ‘in’ at (1) are INTEGER(4)/CHARACTER(0) where the (0) doesn't really reflect the reality either, it is CHARACTER(8) if it would see through the call. Another case where 64-bit little-endian f951 reports CHARACTER(0), for assumed length, etc.: subroutine bar (str) use fortran_strings, only : to_upper, operator(.in.) character(len=*) str logical l l = 32 .in. to_upper(str) end subroutine bar