annotate gcc/testsuite/gfortran.dg/proc_ptr_3.f90 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 ! { dg-require-visibility "" }
kono
parents:
diff changeset
3 !
kono
parents:
diff changeset
4 ! PROCEDURE POINTERS without the PROCEDURE statement
kono
parents:
diff changeset
5 !
kono
parents:
diff changeset
6 ! Contributed by Janus Weil <janus@gcc.gnu.org>
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 real function e1(x)
kono
parents:
diff changeset
9 real :: x
kono
parents:
diff changeset
10 e1 = x * 3.0
kono
parents:
diff changeset
11 end function
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 subroutine e2(a,b)
kono
parents:
diff changeset
14 real, intent(inout) :: a
kono
parents:
diff changeset
15 real, intent(in) :: b
kono
parents:
diff changeset
16 a = a + b
kono
parents:
diff changeset
17 end subroutine
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 program proc_ptr_3
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 real, external, pointer :: fp
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 pointer :: sp
kono
parents:
diff changeset
24 interface
kono
parents:
diff changeset
25 subroutine sp(a,b)
kono
parents:
diff changeset
26 real, intent(inout) :: a
kono
parents:
diff changeset
27 real, intent(in) :: b
kono
parents:
diff changeset
28 end subroutine sp
kono
parents:
diff changeset
29 end interface
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 real, external :: e1
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 interface
kono
parents:
diff changeset
34 subroutine e2(a,b)
kono
parents:
diff changeset
35 real, intent(inout) :: a
kono
parents:
diff changeset
36 real, intent(in) :: b
kono
parents:
diff changeset
37 end subroutine e2
kono
parents:
diff changeset
38 end interface
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 real :: c = 1.2
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 fp => e1
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 if (abs(fp(2.5)-7.5)>0.01) call abort()
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 sp => e2
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 call sp(c,3.4)
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 if (abs(c-4.6)>0.01) call abort()
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 end