The following routine is accepted by ifx, gfortran, and flang-new,
subroutine hello(msg) bind(c)
use, intrinsic :: iso_c_binding, only: c_char
character(kind=c_char,len=:), allocatable, intent(out) :: msg
msg = "Hello from Fortran"
end subroutine
and would have the matching C prototype: void hello(CFI_cdesc_t *msg).
There is special bullet point (6) for this case in the F2018 interpretation document, section 18.3.6, paragraph 2,
