https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89920
--- Comment #2 from MarkEggleston <mark.eggleston at codethink dot com> --- Affects 7, 8 and trunk branches. A do loop from 1 to the maximum value of an integer does not exit. The example below has a check that forces the loop to exit. program test implicit none integer(4) :: i integer(4), parameter :: maximum = huge(i) integer(4) :: count logical :: wrap count = 0 do i = 1,maximum if (i.gt.0) then count = count + 1 else wrap = .true. exit endif enddo write(*,*) "count ", count write(*,*) "wrap", wrap end When compiled with 6.3 the result is: count 2147483647 wrap F When compiled with compiler built using 7, 8 and trunk code on x86_64 the result is: count 2147483647 wrap T Also occurs with integer(1) and integer(2) expect the same is true of integer(8) and integer(16).