1! Test alternate entry points for functions when the result types
2! of all entry points don't match
3
4	integer function f1 (a)
5	integer a, b
6	double precision e1
7	f1 = 15 + a
8	return
9	entry e1 (b)
10	e1 = 42 + b
11	end function
12	complex function f2 (a)
13	integer a
14	logical e2
15	entry e2 (a)
16	if (a .gt. 0) then
17	  e2 = a .lt. 46
18	else
19	  f2 = 45
20	endif
21	end function
22	function f3 (a) result (r)
23	integer a, b
24	real r
25	logical s
26	complex c
27	r = 15 + a
28	return
29	entry e3 (b) result (s)
30	s = b .eq. 42
31	return
32	entry g3 (b) result (c)
33	c = b + 11
34	end function
35	function f4 (a) result (r)
36	logical r
37	integer a, s
38	double precision t
39	entry e4 (a) result (s)
40	entry g4 (a) result (t)
41	r = a .lt. 0
42	if (a .eq. 0) s = 16 + a
43	if (a .gt. 0) t = 17 + a
44	end function
45
46	program entrytest
47	integer f1, e4
48	real f3
49	double precision e1, g4
50	logical e2, e3, f4
51	complex f2, g3
52	if (f1 (6) .ne. 21) call abort ()
53	if (e1 (7) .ne. 49) call abort ()
54	if (f2 (0) .ne. 45) call abort ()
55	if (.not. e2 (45)) call abort ()
56	if (e2 (46)) call abort ()
57	if (f3 (17) .ne. 32) call abort ()
58	if (.not. e3 (42)) call abort ()
59	if (e3 (41)) call abort ()
60	if (g3 (12) .ne. 23) call abort ()
61	if (.not. f4 (-5)) call abort ()
62	if (e4 (0) .ne. 16) call abort ()
63	if (g4 (2) .ne. 19) call abort ()
64	end
65