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

            Bug ID: 89925
           Summary: [8,9 Regression] Wrong array bounds from ALLOCATE with
                    MOLD
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: neil.n.carlson at gmail dot com
  Target Milestone: ---

My colleague passed this example on to me to report. This runs correctly with a
8.2.1 and 9 from Sept, but fails with the current 8 and 9 versions. I believe
it may be a result of the same bad commit(s) that caused PR89174 which I
reported. This example and the one from the other PR originate from the same
code.

module arraytest
  use, intrinsic :: iso_fortran_env
contains
  subroutine allocarray(moldarray)
    real(real64), contiguous, intent(in) :: moldarray(0:,0:,0:)
    real(real64), allocatable :: array(:,:,:)
    integer :: lb1(3),lb2(3)

    allocate(array,mold=moldarray)
    lb1 = lbound(moldarray)
    lb2 = lbound(array)
    if (lb1(1).ne.lb2(1)) write(*,*) "ERROR"
  end subroutine
end module

program test
  use arraytest

  real(real64), allocatable, target :: array(:,:,:)
  allocate(array(5,5,5))
  call allocarray(array)
end program

Reply via email to