! This test checks correct lowering when OpenACC routine directive is placed
! before implicit none.

! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s

module dummy_mod
contains

  subroutine sub1(i)
    !$acc routine seq
    integer :: i
  end subroutine
end module

program test_acc_routine
  use dummy_mod
  
  !$acc routine(sub2) seq
  
  implicit none
  
  integer :: i

contains
  subroutine sub2()
  end subroutine
  
end program

! CHECK: acc.routine @acc_routine_1 func(@_QFPsub2) seq
! CHECK: acc.routine @acc_routine_0 func(@_QMdummy_modPsub1) seq
! CHECK: func.func @_QMdummy_modPsub1(%arg0: !fir.ref<i32> {fir.bindc_name = "i"}) attributes {acc.routine_info = #acc.routine_info<[@acc_routine_0]>}
! CHECK: func.func @_QQmain() attributes {fir.bindc_name = "test_acc_routine"}
! CHECK: func.func @_QFPsub2() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_1]>}
