llvm/flang/test/Lower/HLFIR/internal-procedures-2.f90

! Test instantiation of module variables inside an internal subprogram
! where the use statement is inside the host program.
! RUN: bbc -emit-hlfir -o - %s | FileCheck %s

module module_used_by_host
 implicit none
 integer :: indexed_by_var(2)
 integer :: ref_in_implied_do
 integer :: ref_in_forall(2)
end module

subroutine host_procedure
 use module_used_by_host
 implicit none
contains
 subroutine internal_procedure(i, mask)
  integer :: i
  logical :: mask(2)
  indexed_by_var(i) = 0
  print *, (/(ref_in_implied_do, integer::j=1,10)/)
  forall (integer::k = 1:2)
    ref_in_forall(k) = 0
  end forall
 end subroutine
end subroutine
! CHECK-LABEL: func.func private @_QFhost_procedurePinternal_procedure(
! CHECK:    fir.address_of(@_QMmodule_used_by_hostEindexed_by_var) : !fir.ref<!fir.array<2xi32>>
! CHECK:    fir.address_of(@_QMmodule_used_by_hostEref_in_forall) : !fir.ref<!fir.array<2xi32>>
! CHECK:    fir.address_of(@_QMmodule_used_by_hostEref_in_implied_do) : !fir.ref<i32>