40 lines
1.3 KiB
Fortran
40 lines
1.3 KiB
Fortran
|
! { dg-do run }
|
||
|
! Tests the fix for PR34820, in which the nullification of the
|
||
|
! automatic array iregion occurred in the caller, rather than the
|
||
|
! callee. Since 'nproc' was not available, an ICE ensued. During
|
||
|
! the bug fix, it was found that the scalar to array assignment
|
||
|
! of derived types with allocatable components did not work and
|
||
|
! the fix of this is tested too.
|
||
|
!
|
||
|
! Contributed by Toon Moene <toon@moene.indiv.nluug.nl>
|
||
|
!
|
||
|
module grid_io
|
||
|
type grid_index_region
|
||
|
integer, allocatable::lons(:)
|
||
|
end type grid_index_region
|
||
|
contains
|
||
|
subroutine read_grid_header()
|
||
|
integer :: npiece = 1
|
||
|
type(grid_index_region),allocatable :: iregion(:)
|
||
|
allocate (iregion(npiece + 1))
|
||
|
call read_iregion(npiece,iregion)
|
||
|
if (size(iregion) .ne. npiece + 1) STOP 1
|
||
|
if (.not.allocated (iregion(npiece)%lons)) STOP 2
|
||
|
if (allocated (iregion(npiece+1)%lons)) STOP 3
|
||
|
if (any (iregion(npiece)%lons .ne. [(i, i = 1, npiece)])) STOP 4
|
||
|
deallocate (iregion)
|
||
|
end subroutine read_grid_header
|
||
|
|
||
|
subroutine read_iregion (nproc,iregion)
|
||
|
integer,intent(in)::nproc
|
||
|
type(grid_index_region), intent(OUT)::iregion(1:nproc)
|
||
|
integer :: iarg(nproc)
|
||
|
iarg = [(i, i = 1, nproc)]
|
||
|
iregion = grid_index_region (iarg) !
|
||
|
end subroutine read_iregion
|
||
|
end module grid_io
|
||
|
|
||
|
use grid_io
|
||
|
call read_grid_header
|
||
|
end
|