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

            Bug ID: 99852
           Summary: Missing error "Arithmetic overflow" for some cases
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gs...@t-online.de
  Target Milestone: ---

Following examples produce an error for c and d, but not for a and b :
(similar for wik=2,4,8,16)


$ cat z1.f90
program p
   implicit none
   integer, parameter :: wik = 1
   integer(wik), parameter :: a = huge(1_wik) + 1_wik
   integer(wik) :: b = huge(1_wik) + 1_wik
   integer(wik) :: c
   c = huge(1_wik) + 1_wik
   associate (d => huge(1_wik) + 1_wik)
      print *, a, b, c, d
   end associate
end


$ cat z2.f90
program p
   implicit none
   integer, parameter :: wik = 1
   integer(wik), parameter :: a = -huge(1_wik) - 2_wik
   integer(wik) :: b = -huge(1_wik) - 2_wik
   integer(wik) :: c
   c = -huge(1_wik) - 2_wik
   associate (d => -huge(1_wik) - 2_wik)
      print *, a, b, c, d
   end associate
end


$ gfortran-11-20210328 -c z1.f90
z1.f90:7:7:

    7 |    c = huge(1_wik) + 1_wik
      |       1
Error: Arithmetic overflow at (1)
z1.f90:8:19:

    8 |    associate (d => huge(1_wik) + 1_wik)
      |                   1
Error: Arithmetic overflow at (1)

Reply via email to