1! { dg-do run }
2!
3! PR 41139: [4.5 Regression] a procedure pointer call as actual argument
4!
5! Original test case by Barron Bichon <barron.bichon@swri.org>
6! Modified by Janus Weil <janus@gcc.gnu.org>
7
8PROGRAM test
9
10 PROCEDURE(add), POINTER :: f
11 logical :: g
12
13 ! Passing the function works
14 g=greater(4.,add(1.,2.))
15 if (.not. g) STOP 1
16
17 ! Passing the procedure pointer fails
18 f => add
19 g=greater(4.,f(1.,2.))
20 if (.not. g) STOP 2
21
22CONTAINS
23
24 REAL FUNCTION add(x,y)
25   REAL, INTENT(in) :: x,y
26   print *,"add:",x,y
27   add = x+y
28 END FUNCTION add
29
30 LOGICAL FUNCTION greater(x,y)
31   REAL, INTENT(in) :: x, y
32   greater = (x > y)
33 END FUNCTION greater
34
35END PROGRAM test
36
37