2015-07-03 Christophe Lyon <christophe.lyon@linaro.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / public_private_module_3.f90
blob03f00c200e795416fb62fa6b962e727c8dbe1f0e
1 ! { dg-do link }
2 ! { dg-additional-sources public_private_module_4.f90 }
4 ! PR fortran/52916
5 ! Cf. PR fortran/40973
7 ! Ensure that PRIVATE specific functions do not get
8 ! marked as TREE_PUBLIC() = 0, if the generic name is
9 ! PUBLIC.
11 module m
12 interface gen
13 module procedure bar
14 end interface gen
16 type t
17 end type t
19 interface operator(.myop.)
20 module procedure my_op
21 end interface
23 interface operator(+)
24 module procedure my_plus
25 end interface
27 interface assignment(=)
28 module procedure my_assign
29 end interface
31 private :: bar, my_op, my_plus, my_assign
32 contains
33 subroutine bar()
34 print *, "bar"
35 end subroutine bar
36 function my_op(op1, op2) result(res)
37 type(t) :: res
38 type(t), intent(in) :: op1, op2
39 end function my_op
40 function my_plus(op1, op2) result(res)
41 type(t) :: res
42 type(t), intent(in) :: op1, op2
43 end function my_plus
44 subroutine my_assign(lhs, rhs)
45 type(t), intent(out) :: lhs
46 type(t), intent(in) :: rhs
47 end subroutine my_assign
48 end module m
50 module m2
51 type t2
52 contains
53 procedure, nopass :: func => foo
54 end type t2
55 private :: foo
56 contains
57 subroutine foo()
58 end subroutine foo
59 end module m2