xref: /llvm-project/flang/test/Lower/HLFIR/bindc-proc-interface.f90 (revision b797a6aede3dbdf7e2287e4fbde13f2550961d96)
1! Test mangling with BIND(C) inherited from procedure interface.
2! RUN: bbc -emit-hlfir -o - %s | FileCheck %s
3
4subroutine test()
5  interface
6    subroutine iface_notbindc()
7    end subroutine
8    subroutine iface_bindc() bind(c)
9    end subroutine
10    subroutine iface_explicit_name() bind(c, name="explicit_name")
11    end subroutine
12    subroutine iface_nobinding() bind(c, name="")
13    end subroutine
14  end interface
15
16  procedure(iface_bindc) :: foo_iface_bindc
17  procedure(iface_explicit_name) :: foo_iface_explicit_name
18  procedure(iface_nobinding) :: foo_iface_nobinding
19
20  procedure(iface_bindc), bind(c) :: extra_bindc_iface_bindc
21  procedure(iface_explicit_name), bind(c) :: extra_bindc_iface_explicit_name
22  procedure(iface_nobinding), bind(c) :: extra_bindc_iface_nobinding
23
24  procedure(iface_bindc),  bind(c, name="bar_iface_bindc_2") :: bar_iface_bindc
25  procedure(iface_explicit_name),  bind(c,name="bar_iface_explicit_name_2") ::  bar_iface_explicit_name
26  procedure(iface_nobinding), bind(c, name="bar_iface_nobinding_2") :: bar_iface_nobinding
27
28  procedure(iface_bindc),  bind(c, name="") :: nobinding_iface_bindc
29  procedure(iface_explicit_name),  bind(c, name="") :: nobinding_iface_explicit_name
30  procedure(iface_nobinding), bind(c, name="") :: nobinding_iface_nobinding
31
32  call iface_notbindc()
33  call iface_bindc()
34  call iface_explicit_name()
35  call iface_nobinding()
36
37  call foo_iface_bindc()
38  call foo_iface_explicit_name()
39  call foo_iface_nobinding()
40
41  call extra_bindc_iface_bindc()
42  call extra_bindc_iface_explicit_name()
43  call extra_bindc_iface_nobinding()
44
45  call bar_iface_bindc()
46  call bar_iface_explicit_name()
47  call bar_iface_nobinding()
48
49  call nobinding_iface_bindc()
50  call nobinding_iface_explicit_name()
51  call nobinding_iface_nobinding()
52
53! CHECK:  fir.call @_QPiface_notbindc()
54! CHECK:  fir.call @iface_bindc()
55! CHECK:  fir.call @explicit_name()
56! CHECK:  fir.call @_QPiface_nobinding()
57! CHECK:  fir.call @foo_iface_bindc()
58! CHECK:  fir.call @foo_iface_explicit_name()
59! CHECK:  fir.call @foo_iface_nobinding()
60! CHECK:  fir.call @extra_bindc_iface_bindc()
61! CHECK:  fir.call @extra_bindc_iface_explicit_name()
62! CHECK:  fir.call @extra_bindc_iface_nobinding()
63! CHECK:  fir.call @bar_iface_bindc_2()
64! CHECK:  fir.call @bar_iface_explicit_name_2()
65! CHECK:  fir.call @bar_iface_nobinding_2()
66! CHECK:  fir.call @_QPnobinding_iface_bindc()
67! CHECK:  fir.call @_QPnobinding_iface_explicit_name()
68! CHECK:  fir.call @_QPnobinding_iface_nobinding()
69end subroutine
70