1! { dg-do run }
2!
3! PR 40450: [F03] procedure pointer as actual argument
4!
5! Contributed by John McFarland <john.mcfarland@swri.org>
6
7MODULE m
8 ABSTRACT INTERFACE
9 SUBROUTINE sub()
10 END SUBROUTINE sub
11 END INTERFACE
12
13CONTAINS
14
15 SUBROUTINE passf(f2)
16   PROCEDURE(sub), POINTER:: f2
17   CALL callf(f2)
18 END SUBROUTINE passf
19
20 SUBROUTINE callf(f3)
21   PROCEDURE(sub), POINTER :: f3
22   PRINT*, 'calling f'
23   CALL f3()
24 END SUBROUTINE callf
25END MODULE m
26
27
28PROGRAM prog
29 USE m
30 PROCEDURE(sub), POINTER :: f1
31 f1 => s
32 CALL passf(f1)
33
34CONTAINS
35
36 SUBROUTINE s
37   PRINT*, 'sub'
38 END SUBROUTINE s
39END PROGRAM prog
40