xref: /llvm-project/flang/test/Semantics/bind-c16.f90 (revision f3c227b797c19b1bc27f079ebcb0d5581b57950f)
1d03cd05fSPeter Klausler!RUN: %flang_fc1 -fdebug-dump-symbols %s 2>&1 | FileCheck %s
2d03cd05fSPeter Klausler!CHECK: p1a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:p1a
3d03cd05fSPeter Klausler!CHECK: p1b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:p1b
4d03cd05fSPeter Klausler!CHECK: p1c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:P1c
5d03cd05fSPeter Klausler!CHECK: p2a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:p2a
6d03cd05fSPeter Klausler!CHECK: p2b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:p2b
7d03cd05fSPeter Klausler!CHECK: p2c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:P2c
8d03cd05fSPeter Klausler!CHECK: p3a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:p3a
9d03cd05fSPeter Klausler!CHECK: p3b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:p3b
10d03cd05fSPeter Klausler!CHECK: p3c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:P3c
11d03cd05fSPeter Klauslermodule m1
12d03cd05fSPeter Klausler  procedure(s1) :: p1a
13d03cd05fSPeter Klausler  procedure(s1), bind(c) :: p1b
14d03cd05fSPeter Klausler  procedure(s1), bind(c,name='P1c') :: p1c
15d03cd05fSPeter Klausler  procedure(s2) :: p2a
16d03cd05fSPeter Klausler  procedure(s2), bind(c) :: p2b
17d03cd05fSPeter Klausler  procedure(s2), bind(c,name='P2c') :: p2c
18d03cd05fSPeter Klausler  procedure(s3) :: p3a
19d03cd05fSPeter Klausler  procedure(s3), bind(c) :: p3b
20d03cd05fSPeter Klausler  procedure(s3), bind(c,name='P3c') :: p3c
21d03cd05fSPeter Klausler contains
22d03cd05fSPeter Klausler  subroutine s1() bind(c)
23d03cd05fSPeter Klausler  end
24d03cd05fSPeter Klausler  subroutine s2() bind(c,name='')
25d03cd05fSPeter Klausler  end
26d03cd05fSPeter Klausler  subroutine s3() bind(c,name='foo')
27d03cd05fSPeter Klausler  end
28d03cd05fSPeter Klauslerend
29d03cd05fSPeter Klausler
30d03cd05fSPeter Klausler!CHECK: p1a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:p1a
31d03cd05fSPeter Klausler!CHECK: p1b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:p1b
32d03cd05fSPeter Klausler!CHECK: p1c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:P1c
33d03cd05fSPeter Klausler!CHECK: p2a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:p2a
34d03cd05fSPeter Klausler!CHECK: p2b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:p2b
35d03cd05fSPeter Klausler!CHECK: p2c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:P2c
36d03cd05fSPeter Klausler!CHECK: p3a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:p3a
37d03cd05fSPeter Klausler!CHECK: p3b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:p3b
38d03cd05fSPeter Klausler!CHECK: p3c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:P3c
39d03cd05fSPeter Klauslermodule m2
40d03cd05fSPeter Klausler  interface
41d03cd05fSPeter Klausler    subroutine s1() bind(c)
42d03cd05fSPeter Klausler    end
43d03cd05fSPeter Klausler    subroutine s2() bind(c,name='')
44d03cd05fSPeter Klausler    end
45d03cd05fSPeter Klausler    subroutine s3() bind(c,name='foo')
46d03cd05fSPeter Klausler    end
47d03cd05fSPeter Klausler  end interface
48d03cd05fSPeter Klausler  procedure(s1) :: p1a
49d03cd05fSPeter Klausler  procedure(s1), bind(c) :: p1b
50d03cd05fSPeter Klausler  procedure(s1), bind(c,name='P1c') :: p1c
51d03cd05fSPeter Klausler  procedure(s2) :: p2a
52d03cd05fSPeter Klausler  procedure(s2), bind(c) :: p2b
53d03cd05fSPeter Klausler  procedure(s2), bind(c,name='P2c') :: p2c
54d03cd05fSPeter Klausler  procedure(s3) :: p3a
55d03cd05fSPeter Klausler  procedure(s3), bind(c) :: p3b
56d03cd05fSPeter Klausler  procedure(s3), bind(c,name='P3c') :: p3c
57d03cd05fSPeter Klauslerend
58d03cd05fSPeter Klausler
59d03cd05fSPeter Klausler!CHECK: p1a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:p1a
60d03cd05fSPeter Klausler!CHECK: p1b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:p1b
61d03cd05fSPeter Klausler!CHECK: p1c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s1 bindName:P1c
62d03cd05fSPeter Klausler!CHECK: p2a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:p2a
63d03cd05fSPeter Klausler!CHECK: p2b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:p2b
64d03cd05fSPeter Klausler!CHECK: p2c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s2 bindName:P2c
65d03cd05fSPeter Klausler!CHECK: p3a, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:p3a
66d03cd05fSPeter Klausler!CHECK: p3b, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:p3b
67d03cd05fSPeter Klausler!CHECK: p3c, BIND(C), EXTERNAL, PUBLIC (Subroutine): ProcEntity s3 bindName:P3c
68d03cd05fSPeter Klauslermodule m3
69d03cd05fSPeter Klausler  procedure(s1) :: p1a
70d03cd05fSPeter Klausler  procedure(s1), bind(c) :: p1b
71d03cd05fSPeter Klausler  procedure(s1), bind(c,name='P1c') :: p1c
72d03cd05fSPeter Klausler  procedure(s2) :: p2a
73d03cd05fSPeter Klausler  procedure(s2), bind(c) :: p2b
74d03cd05fSPeter Klausler  procedure(s2), bind(c,name='P2c') :: p2c
75d03cd05fSPeter Klausler  procedure(s3) :: p3a
76d03cd05fSPeter Klausler  procedure(s3), bind(c) :: p3b
77d03cd05fSPeter Klausler  procedure(s3), bind(c,name='P3c') :: p3c
78d03cd05fSPeter Klausler  interface
79d03cd05fSPeter Klausler    subroutine s1() bind(c)
80d03cd05fSPeter Klausler    end
81d03cd05fSPeter Klausler    subroutine s2() bind(c,name='')
82d03cd05fSPeter Klausler    end
83d03cd05fSPeter Klausler    subroutine s3() bind(c,name='foo')
84d03cd05fSPeter Klausler    end
85d03cd05fSPeter Klausler  end interface
86d03cd05fSPeter Klauslerend
87*f3c227b7SPeter Klausler
88*f3c227b7SPeter Klausler!CHECK: cdef01, BIND(C), PUBLIC size=4 offset=0: ObjectEntity type: REAL(4) bindName:cDef01 CDEFINED
89*f3c227b7SPeter Klauslermodule m4
90*f3c227b7SPeter Klausler  real, bind(c, name='cDef01', cdefined) :: cdef01
91*f3c227b7SPeter Klauslerend
92