File tree Expand file tree Collapse file tree 2 files changed +70
-0
lines changed Expand file tree Collapse file tree 2 files changed +70
-0
lines changed Original file line number Diff line number Diff line change @@ -165,6 +165,16 @@ std::string Fortran::lower::mangle::mangleName(
165
165
return mangleName (procBinding.symbol (), scopeBlockIdMap,
166
166
keepExternalInScope, underscoring);
167
167
},
168
+ [&](const Fortran::semantics::GenericDetails &generic)
169
+ -> std::string {
170
+ if (generic.specific ())
171
+ return mangleName (*generic.specific (), scopeBlockIdMap,
172
+ keepExternalInScope, underscoring);
173
+ else
174
+ llvm::report_fatal_error (
175
+ " attempt to mangle a generic name but "
176
+ " it has no specific procedure of the same name" );
177
+ },
168
178
[&](const Fortran::semantics::DerivedTypeDetails &) -> std::string {
169
179
// Derived type mangling must use mangleName(DerivedTypeSpec) so
170
180
// that kind type parameter values can be mangled.
Original file line number Diff line number Diff line change
1
+ ! RUN: split-file %s %t
2
+ ! RUN: bbc -emit-fir %t/mangling_mod_a.f90 -o - | FileCheck %s --check-prefix=FIR
3
+ ! RUN: bbc -emit-fir %t/mangling_mod_b.f90 -o - | FileCheck %s --check-prefix=MANGLE
4
+ ! RUN: bbc -emit-fir %t/mangling_mod_c.f90 -o - | FileCheck %s --check-prefix=MANGLE
5
+ ! RUN: bbc -emit-fir %t/mangling_mod_d.f90 -o - | FileCheck %s --check-prefix=MANGLE
6
+
7
+ ! FIR: module
8
+ ! MANGLE: func.func private @_QPmy_sub(!fir.ref<i32>)
9
+
10
+ !- -- mangling_mod_a.f90
11
+ module mangling_mod_a
12
+ interface
13
+ subroutine my_sub (a )
14
+ integer :: a
15
+ end subroutine my_sub
16
+ end interface
17
+
18
+ ! Generic interface
19
+ interface my_sub
20
+ procedure :: my_sub
21
+ end interface
22
+ contains
23
+ end module mangling_mod_a
24
+
25
+ !- -- mangling_mod_b.f90
26
+ module mangling_mod_b
27
+ use mangling_mod_a
28
+
29
+ contains
30
+ subroutine my_sub2 (a )
31
+ integer :: a
32
+ call my_sub(a)
33
+ end subroutine my_sub2
34
+
35
+ end module mangling_mod_b
36
+
37
+ !- -- mangling_mod_c.f90
38
+ module mangling_mod_c
39
+ use mangling_mod_b
40
+
41
+ contains
42
+ subroutine my_sub3 (a )
43
+ integer :: a
44
+
45
+ call my_sub(a)
46
+ end subroutine my_sub3
47
+ end module mangling_mod_c
48
+
49
+ !- -- mangling_mod_d.f90
50
+ module mangling_mod_d
51
+ use mangling_mod_b
52
+ use mangling_mod_c
53
+
54
+ contains
55
+ subroutine my_sub4 (a )
56
+ integer :: a
57
+
58
+ call my_sub(a)
59
+ end subroutine my_sub4
60
+ end module mangling_mod_d
You can’t perform that action at this time.
0 commit comments