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