1! { dg-do compile }
2! { dg-options "-Wc-binding-type" }
3module bind_c_procs
4  use, intrinsic :: iso_c_binding, only: c_int
5
6  interface
7     ! warning for my_param possibly not being C interoperable
8     subroutine my_c_sub(my_param) bind(c) ! { dg-warning "may not be C interoperable" }
9       integer, value :: my_param
10     end subroutine my_c_sub
11
12     ! warning for my_c_func possibly not being a C interoperable kind
13     ! warning for my_param possibly not being C interoperable
14     ! error message truncated to provide an expression that both warnings
15     ! should match.
16     function my_c_func(my_param) bind(c) ! { dg-warning "may not be" }
17       integer, value :: my_param
18       integer :: my_c_func
19     end function my_c_func
20  end interface
21
22contains
23  ! warning for my_param possibly not being C interoperable
24  subroutine my_f03_sub(my_param) bind(c) ! { dg-warning "may not be" }
25    integer, value :: my_param
26  end subroutine my_f03_sub
27
28  ! warning for my_f03_func possibly not being a C interoperable kind
29  ! warning for my_param possibly not being C interoperable
30  ! error message truncated to provide an expression that both warnings
31  ! should match.
32  function my_f03_func(my_param) bind(c) ! { dg-warning "may not be" }
33    integer, value :: my_param
34    integer :: my_f03_func
35    my_f03_func = 1
36  end function my_f03_func
37
38end module bind_c_procs
39