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

            Bug ID: 84074
           Summary: Incorrect indexing of array when actual argument is an
                    array expression and dummy is polymorphic
           Product: gcc
           Version: 7.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vladimir.fuka at gmail dot com
  Target Milestone: ---

Base on
https://stackoverflow.com/questions/48468922/creating-a-subset-of-an-array-of-derived-type-in-fortran-doesnt-work-what-am-i/48470594#48470594

Problem appears not just for vector subscript expressions, but I also confirmed
for array(2:1:-1).

  type :: t
      integer :: n
  end type

  type(t) :: array(2) = [t(1),t(2)]

  call sub(array((/1,2/)))

contains

  subroutine sub(a)
    class(t) :: a(:)
    integer :: i

    print *, "loop a(i) :"
    do i=1,size(a)
        print *,a(i)%n
    enddo
    print *, "a%n :",a%n
    print *, "a(1:size(a))%n :",a(1:size(a))%n
  end subroutine
end program

Expected output is 1 and 2 for all three.
Actual output:

> gfortran-7 vecsubs2.f90 
> ./a.out 
 loop a(i) :
           2
           0
 a%n :           1           2
 a(1:size(a))%n :           1           2

Reply via email to