blob: 6bef20f2aa597bec49da242e9311df2026b5076c [file] [log] [blame]
! Test mangling with BIND(C) inherited from procedure interface.
! RUN: bbc -emit-hlfir -o - %s | FileCheck %s
subroutine test()
interface
subroutine iface_notbindc()
end subroutine
subroutine iface_bindc() bind(c)
end subroutine
subroutine iface_explicit_name() bind(c, name="explicit_name")
end subroutine
subroutine iface_nobinding() bind(c, name="")
end subroutine
end interface
procedure(iface_bindc) :: foo_iface_bindc
procedure(iface_explicit_name) :: foo_iface_explicit_name
procedure(iface_nobinding) :: foo_iface_nobinding
procedure(iface_bindc), bind(c) :: extra_bindc_iface_bindc
procedure(iface_explicit_name), bind(c) :: extra_bindc_iface_explicit_name
procedure(iface_nobinding), bind(c) :: extra_bindc_iface_nobinding
procedure(iface_bindc), bind(c, name="bar_iface_bindc_2") :: bar_iface_bindc
procedure(iface_explicit_name), bind(c,name="bar_iface_explicit_name_2") :: bar_iface_explicit_name
procedure(iface_nobinding), bind(c, name="bar_iface_nobinding_2") :: bar_iface_nobinding
procedure(iface_bindc), bind(c, name="") :: nobinding_iface_bindc
procedure(iface_explicit_name), bind(c, name="") :: nobinding_iface_explicit_name
procedure(iface_nobinding), bind(c, name="") :: nobinding_iface_nobinding
call iface_notbindc()
call iface_bindc()
call iface_explicit_name()
call iface_nobinding()
call foo_iface_bindc()
call foo_iface_explicit_name()
call foo_iface_nobinding()
call extra_bindc_iface_bindc()
call extra_bindc_iface_explicit_name()
call extra_bindc_iface_nobinding()
call bar_iface_bindc()
call bar_iface_explicit_name()
call bar_iface_nobinding()
call nobinding_iface_bindc()
call nobinding_iface_explicit_name()
call nobinding_iface_nobinding()
! CHECK: fir.call @_QPiface_notbindc()
! CHECK: fir.call @iface_bindc()
! CHECK: fir.call @explicit_name()
! CHECK: fir.call @_QPiface_nobinding()
! CHECK: fir.call @foo_iface_bindc()
! CHECK: fir.call @foo_iface_explicit_name()
! CHECK: fir.call @foo_iface_nobinding()
! CHECK: fir.call @extra_bindc_iface_bindc()
! CHECK: fir.call @extra_bindc_iface_explicit_name()
! CHECK: fir.call @extra_bindc_iface_nobinding()
! CHECK: fir.call @bar_iface_bindc_2()
! CHECK: fir.call @bar_iface_explicit_name_2()
! CHECK: fir.call @bar_iface_nobinding_2()
! CHECK: fir.call @_QPnobinding_iface_bindc()
! CHECK: fir.call @_QPnobinding_iface_explicit_name()
! CHECK: fir.call @_QPnobinding_iface_nobinding()
end subroutine