https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96711
--- Comment #3 from B Eggen <bre08 at eggen dot co.uk> ---
Here is the latest f90 file:
program nint_error
integer :: n, m
integer(kind=16) :: i, j, nint
integer, parameter :: idp=selected_real_kind(9,99)
integer, parameter :: i16=selected_int_kind(38)
real(kind=idp) :: x, y
write(*,'(*(g0:" "))') 'i16=', i16, huge(i)
i=1_16
x=1.0d0
do n=1, 128, 1
j=i-1_16
y=x-1.0d0
m=nint(y) ! this compiles, but gives wrong results
! m=nint(y,i16) ! this will generate an internal compiler error
write(*,'(*(g0:" "))') n, i, x, m
i=i+i
x=x+x
if ( (m<1) .and. (n>3)) exit
end do
do i=2147483647_16-10_16, 2147483648_16+10_16, 1_16
x=dble(i)
m=nint(x)
write(*,'(*(g0:" "))') i, x, m
end do
stop
end program nint_error