https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89236
--- Comment #3 from MarkEggleston <mark.eggleston at codethink dot com> --- Looks like I missed MIN with literals. integer(2) :: a2 integer(4) :: a4 write(*,*) kind(max(7, 9_1)) write(*,*) kind(max(7_2, 9)) write(*,*) kind(max(a2, a4)) write(*,*) kind(min(7_2, 9)) write(*,*) kind(min(a2, a4)) end gives 4 2 4 2 4 So there is discrepancy between literal parameters and variables for MAX and MIN.