https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110419
--- Comment #4 from anlauf at gcc dot gnu.org --- It appears that the issue could be studied with the following code: program p implicit none integer :: a = 65 call val ("A", char(a)) contains subroutine val (x, c) character(kind=1), intent(in) :: x ! control: pass by reference character(kind=1), value :: c print *, "by reference(kind=1): ", x print *, "by value (kind=1): ", c if (c /= x) stop 1 end end If this works on LE with -m64 and -m32, and also on BE with -m64, why would it fail on BE with -m32 ?