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

            Bug ID: 71799
           Summary: [7 Regression] ICE in DO loop code emission
                    (gfc_resolve_iterator)
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---

Hello.

Accidentally, I came to the following code that triggers an ICE:

$ gfortran ~/Programming/testcases/do-loop-ice.f90
/home/marxin/Programming/testcases/do-loop-ice.f90:5:24:

 do i = 10, HUGE(i) - 10, 222
                        1
Error: Arithmetic overflow converting INTEGER(4) to INTEGER(1) at (1). This
check can be disabled with the option ‘-fno-range-check’
/home/marxin/Programming/testcases/do-loop-ice.f90:5:24: internal compiler
error: Can't convert ‘INTEGER(4)’ to ‘INTEGER(1)’ at (1)
0x687f81 gfc_internal_error(char const*, ...)
        ../../gcc/fortran/error.c:1312
0x6a2a8f gfc_convert_type_warn(gfc_expr*, gfc_typespec*, int, int)
        ../../gcc/fortran/intrinsic.c:4795
0x6ea76a gfc_resolve_iterator(gfc_iterator*, bool, bool)
        ../../gcc/fortran/resolve.c:6526
0x6ec76d gfc_resolve_code(gfc_code*, gfc_namespace*)
        ../../gcc/fortran/resolve.c:10689
0x6eec92 resolve_codes
        ../../gcc/fortran/resolve.c:15667
0x6eed81 gfc_resolve(gfc_namespace*)
        ../../gcc/fortran/resolve.c:15701
0x6da18a resolve_all_program_units
        ../../gcc/fortran/parse.c:5825
0x6da18a gfc_parse_file()
        ../../gcc/fortran/parse.c:6077
0x71c5c2 gfc_be_parse_file
        ../../gcc/fortran/f95-lang.c:198

where:
$ cat ~/Programming/testcases/do-loop-ice.f90
subroutine test2(array, s, block)
integer(1) :: i, block(9), array(2)
integer (8) :: s

do i = 10, HUGE(i) - 10, 222
  s = s + 1
end do

end subroutine test2


I'll prepare fix for that.

Reply via email to