1! { dg-do compile }
2program main
3use iso_c_binding
4  interface
5     subroutine p1(f, a1, a2, a3, a4) bind(c, name='printf') ! Doubtful use ...
6       import :: c_ptr, c_int, c_double
7       type(c_ptr), value :: f
8       integer(c_int), value :: a1, a3
9       real(c_double), value :: a2, a4
10     end subroutine p1
11
12     subroutine p2(f, a1, a2, a3, a4) bind(c, name='printf') ! ... with incompatible interfaces
13       import :: c_ptr, c_int, c_double
14       type(c_ptr), value :: f
15       real(c_double), value :: a1, a3
16       integer(c_int), value :: a2, a4
17     end subroutine p2
18  end interface
19
20  type(c_ptr) :: f_ptr
21  character(len=20), target :: format
22
23  f_ptr = c_loc(format(1:1))
24
25  format = 'Hello %d %f %d %f\n' // char(0)
26  call p1(f_ptr, 10, 1.23d0, 20, 2.46d0)
27
28  format = 'World %f %d %f %d\n' // char(0)
29  call p2(f_ptr, 1.23d0, 10, 2.46d0, 20)
30end program main
31