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

            Bug ID: 88685
           Summary: 8/9 regression] pointer class array argument indexing
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: antony at cosmologist dot info
  Target Milestone: ---

Created attachment 45333
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45333&action=edit
Test case

This code works in 7.3.1, but gives wrong answers in 8.3.1 and trunk (outputs
should all be the same, but are not):

    program tester
    implicit none
    Type TArr
        integer, allocatable :: CL(:)
    end Type TArr

    type(TArr), allocatable, target :: arr(:,:)
    class(TArr), pointer:: Cls(:,:)
    integer i

    allocate(arr(1,1))
    allocate(arr(1,1)%CL(3))
    arr(1,1)%CL=-1
    cls => arr
    call doit(cls)

    contains

    subroutine doit(cls)
    class(TArr), pointer :: Cls(:,:)

    cls(1,1)%CL(:) = 1
    print *, 'CL = ', Cls(1,1)%CL
    print *, 'CL(i)=  ', Cls(1,1)%CL(1),Cls(1,1)%CL(2),Cls(1,1)%CL(3)

    end subroutine doit

    end program tester

A longer variation is attached that's closer to real case where I found it. It
can give rise to very hard-to-trace bugs, in my full real-world code it showed
up as a mysterious seg fault in random places.

Looks similar to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87336, but is not
fixed in nightly build.

Reply via email to