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

Subversion Repositories openrisc

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

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 694 jeremybenn
! { dg-do run }
2
 
3
! Check that generic bindings targetting ELEMENTAL procedures work.
4
 
5
MODULE m
6
  IMPLICIT NONE
7
 
8
  TYPE :: t
9
  CONTAINS
10
    PROCEDURE, NOPASS :: double
11
    PROCEDURE, NOPASS :: double_here
12
    GENERIC :: double_it => double
13
    GENERIC :: double_inplace => double_here
14
  END TYPE t
15
 
16
CONTAINS
17
 
18
  ELEMENTAL INTEGER FUNCTION double (val)
19
    IMPLICIT NONE
20
    INTEGER, INTENT(IN) :: val
21
    double = 2 * val
22
  END FUNCTION double
23
 
24
  ELEMENTAL SUBROUTINE double_here (val)
25
    IMPLICIT NONE
26
    INTEGER, INTENT(INOUT) :: val
27
    val = 2 * val
28
  END SUBROUTINE double_here
29
 
30
END MODULE m
31
 
32
PROGRAM main
33
  USE m
34
  IMPLICIT NONE
35
 
36
  TYPE(t) :: obj
37
  INTEGER :: arr(42), arr2(42), arr3(42), arr4(42)
38
  INTEGER :: i
39
 
40
  arr = (/ (i, i = 1, 42) /)
41
 
42
  arr2 = obj%double (arr)
43
  arr3 = obj%double_it (arr)
44
 
45
  arr4 = arr
46
  CALL obj%double_inplace (arr4)
47
 
48
  IF (ANY (arr2 /= 2 * arr) .OR. &
49
      ANY (arr3 /= 2 * arr) .OR. &
50
      ANY (arr4 /= 2 * arr)) THEN
51
    CALL abort ()
52
  END IF
53
END PROGRAM main
54
 
55
! { 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.