1! { dg-do run }
2!
3! PR 40646: [F03] array-valued procedure pointer components
4!
5! Original test case by Charlie Sharpsteen <chuck@sharpsteen.net>
6! Modified by Janus Weil <janus@gcc.gnu.org>
7
8module bugTestMod
9  implicit none
10  type:: boundTest
11    procedure(returnMat), pointer, nopass:: test
12  end type boundTest
13contains
14  function returnMat( a, b ) result( mat )
15    integer:: a, b
16    double precision, dimension(a,b):: mat
17    mat = 1d0
18  end function returnMat
19end module bugTestMod
20
21program bugTest
22  use bugTestMod
23  implicit none
24  type( boundTest ):: testObj
25  double precision, dimension(2,2):: testCatch
26  testObj%test => returnMat
27  testCatch = testObj%test(2,2)
28  print *,testCatch
29  if (sum(testCatch)/=4) STOP 1
30  print *,testObj%test(3,3)
31  if (sum(testObj%test(3,3))/=9) STOP 2
32end program bugTest
33