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