1! RUN: bbc -o - %s | FileCheck %s
2
3module units
4  integer, parameter :: preconnected_unit(3) = [0, 5, 6]
5contains
6  ! CHECK-LABEL: _QMunitsPis_preconnected_unit
7  logical function is_preconnected_unit(u)
8  ! CHECK: [[units_ssa:%[0-9]+]] = fir.address_of(@_QMunitsECpreconnected_unit) : !fir.ref<!fir.array<3xi32>>
9    integer :: u
10    integer :: i
11    is_preconnected_unit = .true.
12    do i = lbound(preconnected_unit,1), ubound(preconnected_unit,1)
13      ! CHECK: fir.coordinate_of [[units_ssa]]
14      if (preconnected_unit(i) == u) return
15    end do
16    is_preconnected_unit = .false.
17  end function
18end module units
19
20! CHECK-LABEL: _QPcheck_units
21subroutine check_units
22  use units
23  do i=-1,8
24    if (is_preconnected_unit(i)) print*, i
25  enddo
26end
27
28! CHECK-LABEL: _QPzero
29subroutine zero
30  complex, parameter :: a(0) = [(((k,k=1,10),j=-2,2,-1),i=2,-2,-2)]
31  complex, parameter :: b(0) = [(7,i=3,-3)]
32  ! CHECK: fir.address_of(@_QQro.0xz4.null) : !fir.ref<!fir.array<0x!fir.complex<4>>>
33  ! CHECK-NOT: _QQro
34  print*, '>', a, '<'
35  print*, '>', b, '<'
36end
37
38! CHECK-LABEL: _QQmain
39program prog
40  call check_units
41  call zero
42end
43
44! CHECK: fir.global internal @_QFzeroECa constant : !fir.array<0x!fir.complex<4>>
45! CHECK:   %0 = fir.undefined !fir.array<0x!fir.complex<4>>
46! CHECK:   fir.has_value %0 : !fir.array<0x!fir.complex<4>>
47