1! { dg-do run }
2!
3! PR 40176:  Fortran 2003: Procedure pointers with array return value
4!
5! This example tests for a bug in procedure pointer assignments,
6! where the rhs is a dummy.
7!
8! Original test case by Barron Bichon <barron.bichon@swri.org>
9! Modified by Janus Weil <janus@gcc.gnu.org>
10
11PROGRAM test_prog
12
13  PROCEDURE(add), POINTER :: forig, fset
14
15  forig => add
16
17  CALL set_ptr(forig,fset)
18
19  if (forig(1,2) /= fset(1,2)) STOP 1
20
21CONTAINS
22
23  SUBROUTINE set_ptr(f1,f2)
24    PROCEDURE(add), POINTER :: f1, f2
25    f2 => f1
26  END SUBROUTINE set_ptr
27
28  FUNCTION add(a,b)
29    INTEGER :: a,b,add
30    add = a+b
31
32  END FUNCTION add
33
34END PROGRAM test_prog
35
36