summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.fortran-torture/execute/entry_4.f90
blob: f74440c13a70e1145f37888cf64b8d1d4eb2754d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
! 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