https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107444
--- Comment #1 from anlauf at gcc dot gnu.org --- It appears that there is also confusion about the procedure decl. This is demonstrated by: program p call s() call s('') ! Actual argument is too short, reject? call s('a') call s('ab') contains subroutine s (c) character, value, optional :: c end subroutine s end The dump tree shows: void s (character(kind=1)[1:1] c, integer(kind=8) _c) [...] void p () { static void s (character(kind=1)[1:1], integer(kind=8)); s (0B, 0); s ("", 1, 0); s ("a", 1, 1); s ("ab", 1, 2);