summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90
blob: 870a76c652ead657377fe5f286cc5bfc1b62ddc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
! { dg-do run }
! PR 49479 - this used not to print anything.
! Test case by Joost VandeVondele.
MODULE M1
  IMPLICIT NONE
  type foo
     character(len=5) :: x
  end type foo
CONTAINS
  SUBROUTINE S1(data)
    INTEGER, DIMENSION(:), INTENT(IN), &
         OPTIONAL                               :: DATA
    character(20) :: line
    IF (.not. PRESENT(data)) call abort
    write (unit=line,fmt='(I5)') size(data)
    if (line /= '    0               ') call abort
  END SUBROUTINE S1

  subroutine s_type(data)
    type(foo), dimension(:), intent(in), optional :: data
    character(20) :: line
    IF (.not. PRESENT(data)) call abort
    write (unit=line,fmt='(I5)') size(data)
    if (line /= '    0               ') call abort
  end subroutine s_type

  SUBROUTINE S2(N)
    INTEGER :: N
    INTEGER, ALLOCATABLE, DIMENSION(:, :)    :: blki
    type(foo), allocatable, dimension(:, :)  :: bar
    ALLOCATE(blki(3,N))
    allocate (bar(3,n))
    blki=0
    CALL S1(RESHAPE(blki,(/3*N/)))
    call s_type(reshape(bar, (/3*N/)))
  END SUBROUTINE S2

END MODULE M1

USE M1
CALL S2(0)
END
! { dg-final { cleanup-modules "m1" } }