OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gfortran.dg/] [typebound_call_1.f03] - Blame information for rev 694

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 694 jeremybenn
! { dg-do run }
2
 
3
! Type-bound procedures
4
! Check basic calls to NOPASS type-bound procedures.
5
 
6
MODULE m
7
  IMPLICIT NONE
8
 
9
  TYPE add
10
  CONTAINS
11
    PROCEDURE, NOPASS :: func => func_add
12
    PROCEDURE, NOPASS :: sub => sub_add
13
    PROCEDURE, NOPASS :: echo => echo_add
14
  END TYPE add
15
 
16
  TYPE mul
17
  CONTAINS
18
    PROCEDURE, NOPASS :: func => func_mul
19
    PROCEDURE, NOPASS :: sub => sub_mul
20
    PROCEDURE, NOPASS :: echo => echo_mul
21
  END TYPE mul
22
 
23
CONTAINS
24
 
25
  INTEGER FUNCTION func_add (a, b)
26
    IMPLICIT NONE
27
    INTEGER :: a, b
28
    func_add = a + b
29
  END FUNCTION func_add
30
 
31
  INTEGER FUNCTION func_mul (a, b)
32
    IMPLICIT NONE
33
    INTEGER :: a, b
34
    func_mul = a * b
35
  END FUNCTION func_mul
36
 
37
  SUBROUTINE sub_add (a, b, c)
38
    IMPLICIT NONE
39
    INTEGER, INTENT(IN) :: a, b
40
    INTEGER, INTENT(OUT) :: c
41
    c = a + b
42
  END SUBROUTINE sub_add
43
 
44
  SUBROUTINE sub_mul (a, b, c)
45
    IMPLICIT NONE
46
    INTEGER, INTENT(IN) :: a, b
47
    INTEGER, INTENT(OUT) :: c
48
    c = a * b
49
  END SUBROUTINE sub_mul
50
 
51
  SUBROUTINE echo_add ()
52
    IMPLICIT NONE
53
    WRITE (*,*) "Hi from adder!"
54
  END SUBROUTINE echo_add
55
 
56
  INTEGER FUNCTION echo_mul ()
57
    IMPLICIT NONE
58
    echo_mul = 5
59
    WRITE (*,*) "Hi from muler!"
60
  END FUNCTION echo_mul
61
 
62
  ! Do the testing here, in the same module as the type is.
63
  SUBROUTINE test ()
64
    IMPLICIT NONE
65
 
66
    TYPE(add) :: adder
67
    TYPE(mul) :: muler
68
 
69
    INTEGER :: x
70
 
71
    IF (adder%func (2, 3) /= 5 .OR. muler%func (2, 3) /= 6) THEN
72
      CALL abort ()
73
    END IF
74
 
75
    CALL adder%sub (2, 3, x)
76
    IF (x /= 5) THEN
77
      CALL abort ()
78
    END IF
79
 
80
    CALL muler%sub (2, 3, x)
81
    IF (x /= 6) THEN
82
      CALL abort ()
83
    END IF
84
 
85
    ! Check procedures without arguments.
86
    CALL adder%echo ()
87
    x = muler%echo ()
88
    CALL adder%echo
89
  END SUBROUTINE test
90
 
91
END MODULE m
92
 
93
PROGRAM main
94
  USE m, ONLY: test
95
  CALL test ()
96
END PROGRAM main
97
 
98
! { dg-final { cleanup-modules "m" } }

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.