xref: /llvm-project/flang/test/Lower/module-generic-with-specific-mangling.f90 (revision 4ed90920a84272a4e1737db9bdd50d57cade3cf4)
1*4ed90920SRoger Ferrer Ibáñez! RUN: split-file %s %t
2*4ed90920SRoger Ferrer Ibáñez! RUN: bbc -emit-fir %t/mangling_mod_a.f90 -o - | FileCheck %s --check-prefix=FIR
3*4ed90920SRoger Ferrer Ibáñez! RUN: bbc -emit-fir %t/mangling_mod_b.f90 -o - | FileCheck %s --check-prefix=MANGLE
4*4ed90920SRoger Ferrer Ibáñez! RUN: bbc -emit-fir %t/mangling_mod_c.f90 -o - | FileCheck %s --check-prefix=MANGLE
5*4ed90920SRoger Ferrer Ibáñez! RUN: bbc -emit-fir %t/mangling_mod_d.f90 -o - | FileCheck %s --check-prefix=MANGLE
6*4ed90920SRoger Ferrer Ibáñez
7*4ed90920SRoger Ferrer Ibáñez! FIR: module
8*4ed90920SRoger Ferrer Ibáñez! MANGLE: func.func private @_QPmy_sub(!fir.ref<i32>)
9*4ed90920SRoger Ferrer Ibáñez
10*4ed90920SRoger Ferrer Ibáñez!--- mangling_mod_a.f90
11*4ed90920SRoger Ferrer Ibáñezmodule mangling_mod_a
12*4ed90920SRoger Ferrer Ibáñez  interface
13*4ed90920SRoger Ferrer Ibáñez    subroutine my_sub(a)
14*4ed90920SRoger Ferrer Ibáñez      integer :: a
15*4ed90920SRoger Ferrer Ibáñez    end subroutine my_sub
16*4ed90920SRoger Ferrer Ibáñez  end interface
17*4ed90920SRoger Ferrer Ibáñez
18*4ed90920SRoger Ferrer Ibáñez  ! Generic interface
19*4ed90920SRoger Ferrer Ibáñez  interface my_sub
20*4ed90920SRoger Ferrer Ibáñez      procedure :: my_sub
21*4ed90920SRoger Ferrer Ibáñez  end interface
22*4ed90920SRoger Ferrer Ibáñez  contains
23*4ed90920SRoger Ferrer Ibáñezend module mangling_mod_a
24*4ed90920SRoger Ferrer Ibáñez
25*4ed90920SRoger Ferrer Ibáñez!--- mangling_mod_b.f90
26*4ed90920SRoger Ferrer Ibáñezmodule mangling_mod_b
27*4ed90920SRoger Ferrer Ibáñez  use mangling_mod_a
28*4ed90920SRoger Ferrer Ibáñez
29*4ed90920SRoger Ferrer Ibáñez  contains
30*4ed90920SRoger Ferrer Ibáñez    subroutine my_sub2(a)
31*4ed90920SRoger Ferrer Ibáñez      integer :: a
32*4ed90920SRoger Ferrer Ibáñez      call my_sub(a)
33*4ed90920SRoger Ferrer Ibáñez    end subroutine my_sub2
34*4ed90920SRoger Ferrer Ibáñez
35*4ed90920SRoger Ferrer Ibáñezend module mangling_mod_b
36*4ed90920SRoger Ferrer Ibáñez
37*4ed90920SRoger Ferrer Ibáñez!--- mangling_mod_c.f90
38*4ed90920SRoger Ferrer Ibáñezmodule mangling_mod_c
39*4ed90920SRoger Ferrer Ibáñez  use mangling_mod_b
40*4ed90920SRoger Ferrer Ibáñez
41*4ed90920SRoger Ferrer Ibáñez  contains
42*4ed90920SRoger Ferrer Ibáñez    subroutine my_sub3(a)
43*4ed90920SRoger Ferrer Ibáñez      integer :: a
44*4ed90920SRoger Ferrer Ibáñez
45*4ed90920SRoger Ferrer Ibáñez      call my_sub(a)
46*4ed90920SRoger Ferrer Ibáñez    end subroutine my_sub3
47*4ed90920SRoger Ferrer Ibáñezend module mangling_mod_c
48*4ed90920SRoger Ferrer Ibáñez
49*4ed90920SRoger Ferrer Ibáñez!--- mangling_mod_d.f90
50*4ed90920SRoger Ferrer Ibáñezmodule mangling_mod_d
51*4ed90920SRoger Ferrer Ibáñez  use mangling_mod_b
52*4ed90920SRoger Ferrer Ibáñez  use mangling_mod_c
53*4ed90920SRoger Ferrer Ibáñez
54*4ed90920SRoger Ferrer Ibáñez  contains
55*4ed90920SRoger Ferrer Ibáñez    subroutine my_sub4(a)
56*4ed90920SRoger Ferrer Ibáñez      integer :: a
57*4ed90920SRoger Ferrer Ibáñez
58*4ed90920SRoger Ferrer Ibáñez      call my_sub(a)
59*4ed90920SRoger Ferrer Ibáñez    end subroutine my_sub4
60*4ed90920SRoger Ferrer Ibáñezend module mangling_mod_d
61