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

            Bug ID: 104908
           Summary: gfortran 11/trunk regression: incorrect Fortran
                    out-of-bound runtime error.
           Product: gcc
           Version: 11.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: a.shahmoradi at gmail dot com
  Target Milestone: ---

The following code appears to be standard-conforming, but gfortran throws a
runtime error with the flag `-check=bounds`,

```
program test

    type vec
        integer :: x(3)
    end type

    type(vec) :: v(2)

    call sub(v)

contains

    subroutine sub (v)

        class(vec), intent(in) :: v(:)

        integer :: k, q(3)

        q = [ (v(1)%x(k), k = 1, 3) ]   ! <-- fails here

   end subroutine

end program
```

Here is the error message,

```
At line 19 of file /app/example.f90
Fortran runtime error: Index '3' of dimension 1 of array 'v%_data%x' above
upper bound of 2
```

This is a gfortran-11 regression since the code is functional with gfortran-10
with the same compile flags. It can be tested here with different versions of
gfortran: https://godbolt.org/z/K6chcYE5e

This issue was raised in a StackOverflow question:
https://stackoverflow.com/questions/71441100/class-dummy-argument-for-array-of-custom-types-stuck-on-fcheck-bounds

I am only reporting it to the GNU Bugzilla.

Reply via email to