! Test alternate entry points for functions when the result types ! of all entry points don't match integer function f1 (a) integer a, b double precision e1 f1 = 15 + a return entry e1 (b) e1 = 42 + b end function complex function f2 (a) integer a logical e2 entry e2 (a) if (a .gt. 0) then e2 = a .lt. 46 else f2 = 45 endif end function function f3 (a) result (r) integer a, b real r logical s complex c r = 15 + a return entry e3 (b) result (s) s = b .eq. 42 return entry g3 (b) result (c) c = b + 11 end function function f4 (a) result (r) logical r integer a, s double precision t entry e4 (a) result (s) entry g4 (a) result (t) r = a .lt. 0 if (a .eq. 0) s = 16 + a if (a .gt. 0) t = 17 + a end function program entrytest integer f1, e4 real f3 double precision e1, g4 logical e2, e3, f4 complex f2, g3 if (f1 (6) .ne. 21) call abort () if (e1 (7) .ne. 49) call abort () if (f2 (0) .ne. 45) call abort () if (.not. e2 (45)) call abort () if (e2 (46)) call abort () if (f3 (17) .ne. 32) call abort () if (.not. e3 (42)) call abort () if (e3 (41)) call abort () if (g3 (12) .ne. 23) call abort () if (.not. f4 (-5)) call abort () if (e4 (0) .ne. 16) call abort () if (g4 (2) .ne. 19) call abort () end