4 ! PR fortran/52751 (top, "module mod")
5 ! PR fortran/40973 (bottom, "module m"
7 ! Ensure that (only) those module variables and procedures which are PRIVATE
8 ! and have no C-binding label are optimized away.
12 integer, private
:: iii
13 integer, private
, bind(C
) :: jj
! { dg-warning "PRIVATE but has been given the binding label" }
14 integer, private
, bind(C
,name
='lll') :: kk
! { dg-warning "PRIVATE but has been given the binding label" }
15 integer, private
, bind(C
,name
='') :: mmmm
16 integer, bind(C
) :: nnn
17 integer, bind(C
,name
='oo') :: pp
18 integer, bind(C
,name
='') :: qq
21 ! { dg-final { scan-assembler "__mod_MOD_aa" } }
22 ! { dg-final { scan-assembler-not "iii" } }
23 ! { dg-final { scan-assembler "jj" } }
24 ! { dg-final { scan-assembler "lll" } }
25 ! { dg-final { scan-assembler-not "kk" } }
26 ! { dg-final { scan-assembler-not "mmmm" } }
27 ! { dg-final { scan-assembler "nnn" } }
28 ! { dg-final { scan-assembler "oo" } }
29 ! { dg-final { scan-assembler "__mod_MOD_qq" } }
32 PRIVATE
:: two
, three
, four
, six
33 PUBLIC
:: one
, seven
, eight
, ten
39 integer FUNCTION two()
42 integer FUNCTION three() bind(C
) ! { dg-warning "PRIVATE but has been given the binding label" }
45 integer FUNCTION four() bind(C
, name
='five') ! { dg-warning "PRIVATE but has been given the binding label" }
48 integer FUNCTION six() bind(C
, name
='')
51 integer FUNCTION seven() bind(C
)
54 integer FUNCTION eight() bind(C
, name
='nine')
57 integer FUNCTION ten() bind(C
, name
='')
62 ! { dg-final { scan-assembler "__m_MOD_one" } }
63 ! { dg-final { scan-assembler-not "two" } }
64 ! { dg-final { scan-assembler "three" } }
65 ! { dg-final { scan-assembler-not "four" } }
66 ! { dg-final { scan-assembler "five" } }
67 ! { dg-final { scan-assembler-not "six" } }
68 ! { dg-final { scan-assembler "seven" } }
69 ! { dg-final { scan-assembler "nine" } }
70 ! { dg-final { scan-assembler "__m_MOD_ten" } }