text: ! RUN: %python %S/test_symbols.py %s %flang_fc1
  ! Test host association in internal subroutine of main program.
  
  !DEF: /main MainProgram
  program main
   !DEF: /main/x ObjectEntity INTEGER(4)
   integer x
   !DEF: /main/s (Subroutine) Subprogram
   call s
  contains
   !REF: /main/s
   subroutine s
    !DEF: /main/s/y (Implicit) ObjectEntity REAL(4)
    !DEF: /main/s/x HostAssoc INTEGER(4)
    y = x
   contains
    !DEF: /main/s/s2 (Subroutine) Subprogram
    subroutine s2
     !DEF: /main/s/s2/z (Implicit) ObjectEntity REAL(4)
     !DEF: /main/s/s2/x HostAssoc INTEGER(4)
     z = x
    end subroutine
   end subroutine
  end program
  
  !DEF: /s (Subroutine) Subprogram
  subroutine s
   !DEF: /s/x ObjectEntity REAL(4)
   real x(100, 100)
   !DEF: /s/s1 (Subroutine) Subprogram
   call s1
  contains
   !REF: /s/s1
    subroutine s1
      !DEF: /s/s1/x HostAssoc REAL(4)
      print *, x(10, 10)
    end subroutine
  end subroutine
  
  !DEF: /sb (Subroutine) Subprogram
  subroutine sb
   !DEF: /sb/x TARGET ObjectEntity REAL(4)
   real, target :: x
   !DEF: /sb/s1 (Subroutine) Subprogram
   call s1
  contains
   !REF: /sb/s1
   subroutine s1
    !DEF: /sb/s1/p POINTER ObjectEntity REAL(4)
    real, pointer :: p
    !REF: /sb/s1/p
    !DEF: /sb/s1/x TARGET HostAssoc REAL(4)
    p => x
   end subroutine
  end subroutine
  
  ! Test host associated symbols are also created for symbols that are use
  ! associated in the host.
  
  !DEF: /m1 Module
  module m1
   !DEF: /m1/x PUBLIC ObjectEntity REAL(4)
   real x(100,100)
   !DEF: /m1/x_target PUBLIC, TARGET ObjectEntity REAL(4)
   real, target :: x_target
  end module
  
  !DEF: /s_use (Subroutine) Subprogram
  subroutine s_use
   !REF: /m1
   use :: m1
   !DEF: /s_use/x Use REAL(4)
   print *, x
   !DEF: /s_use/s1 (Subroutine) Subprogram
   call s1
  contains
   !REF: /s_use/s1
   subroutine s1
    !DEF: /s_use/s1/x HostAssoc REAL(4)
    print *, x(10,10)
   end subroutine
  end subroutine
  
  !DEF: /sb_use (Subroutine) Subprogram
  subroutine sb_use
   !REF: /m1
   use :: m1
   !DEF: /sb_use/x_target TARGET Use REAL(4)
   print *, x_target
   !DEF: /sb_use/s1 (Subroutine) Subprogram
   call s1
  contains
   !REF: /sb_use/s1
   subroutine s1
    !DEF: /sb_use/s1/p POINTER ObjectEntity REAL(4)
    real, pointer :: p
    !REF: /sb_use/s1/p
    !DEF: /sb_use/s1/x_target TARGET HostAssoc REAL(4)
    p => x_target
   end subroutine
  end subroutine
  