1! Test alternate entry points for functions when the result types
2! of all entry points match
3
4	function f1 (a)
5	integer a, b
6	integer, pointer :: f1, e1
7	allocate (f1)
8	f1 = 15 + a
9	return
10	entry e1 (b)
11	allocate (e1)
12	e1 = 42 + b
13	end function
14	function f2 ()
15	real, pointer :: f2, e2
16	entry e2 ()
17	allocate (e2)
18	e2 = 45
19	end function
20	function f3 ()
21	double precision, pointer :: f3, e3
22	entry e3 ()
23	allocate (f3)
24	f3 = 47
25	end function
26	function f4 (a) result (r)
27	double precision a, b
28	double precision, pointer :: r, s
29	allocate (r)
30	r = 15 + a
31	return
32	entry e4 (b) result (s)
33	allocate (s)
34	s = 42 + b
35	end function
36	function f5 () result (r)
37	integer, pointer :: r, s
38	entry e5 () result (s)
39	allocate (r)
40	r = 45
41	end function
42	function f6 () result (r)
43	real, pointer :: r, s
44	entry e6 () result (s)
45	allocate (s)
46	s = 47
47	end function
48
49	program entrytest
50	interface
51	function f1 (a)
52	integer a
53	integer, pointer :: f1
54	end function
55	function e1 (b)
56	integer b
57	integer, pointer :: e1
58	end function
59	function f2 ()
60	real, pointer :: f2
61	end function
62	function e2 ()
63	real, pointer :: e2
64	end function
65	function f3 ()
66	double precision, pointer :: f3
67	end function
68	function e3 ()
69	double precision, pointer :: e3
70	end function
71	function f4 (a)
72	double precision a
73	double precision, pointer :: f4
74	end function
75	function e4 (b)
76	double precision b
77	double precision, pointer :: e4
78	end function
79	function f5 ()
80	integer, pointer :: f5
81	end function
82	function e5 ()
83	integer, pointer :: e5
84	end function
85	function f6 ()
86	real, pointer :: f6
87	end function
88	function e6 ()
89	real, pointer :: e6
90	end function
91	end interface
92	double precision d
93	if (f1 (6) .ne. 21) STOP 1
94	if (e1 (7) .ne. 49) STOP 2
95	if (f2 () .ne. 45) STOP 3
96	if (e2 () .ne. 45) STOP 4
97	if (f3 () .ne. 47) STOP 5
98	if (e3 () .ne. 47) STOP 6
99	d = 17
100	if (f4 (d) .ne. 32) STOP 7
101	if (e4 (d) .ne. 59) STOP 8
102	if (f5 () .ne. 45) STOP 9
103	if (e5 () .ne. 45) STOP 10
104	if (f6 () .ne. 47) STOP 11
105	if (e6 () .ne. 47) STOP 12
106	end
107