https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108431

            Bug ID: 108431
           Summary: Loop variable reaching integer `huge` causes infinte
                    loop
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: federico.perini at gmail dot com
  Target Milestone: ---

Consider the following tiny program:

program test_huge
    use iso_fortran_env, only: int8
    integer(int8) :: i
    do i=-huge(i),huge(i)
       print "('i=',i10,' b=',b8.8)", i,i
    end do
end

With gfortran 12.2 on Mac, this causes an infinite loop that never ends. I
guess there is a problem with huge(i)=127, because if use the same bounds with
an implicit loop, I get:


    3 |         integer(int8), parameter :: a(*) = [(i,i=-huge(i),huge(i))]
      |                                                              1
Warning: DO loop at (1) is undefined as it overflows [-Wundefined-do-loop]

I've put this example on godbolt at https://godbolt.org/z/6x7K9a6a3 . 
Apparently, this issue affects all gfortran versions from 7.1 up (6.3 is the
last working version), 

Federico

Reply via email to