annotate gcc/testsuite/gfortran.dg/internal_dummy_4.f08 @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 ! PR fortran/34133
kono
parents:
diff changeset
3 ! PR fortran/34162
kono
parents:
diff changeset
4 !
kono
parents:
diff changeset
5 ! Test of using internal bind(C) procedures as
kono
parents:
diff changeset
6 ! actual argument. Bind(c) on internal procedures and
kono
parents:
diff changeset
7 ! internal procedures are actual argument are
kono
parents:
diff changeset
8 ! Fortran 2008 (draft) extension.
kono
parents:
diff changeset
9 !
kono
parents:
diff changeset
10 module test_mod
kono
parents:
diff changeset
11 use iso_c_binding
kono
parents:
diff changeset
12 implicit none
kono
parents:
diff changeset
13 contains
kono
parents:
diff changeset
14 subroutine test_sub(a, arg, res)
kono
parents:
diff changeset
15 interface
kono
parents:
diff changeset
16 subroutine a(x) bind(C)
kono
parents:
diff changeset
17 import
kono
parents:
diff changeset
18 integer(c_int), intent(inout) :: x
kono
parents:
diff changeset
19 end subroutine a
kono
parents:
diff changeset
20 end interface
kono
parents:
diff changeset
21 integer(c_int), intent(inout) :: arg
kono
parents:
diff changeset
22 integer(c_int), intent(in) :: res
kono
parents:
diff changeset
23 call a(arg)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
24 if(arg /= res) STOP 1
111
kono
parents:
diff changeset
25 end subroutine test_sub
kono
parents:
diff changeset
26 subroutine test_func(a, arg, res)
kono
parents:
diff changeset
27 interface
kono
parents:
diff changeset
28 integer(c_int) function a(x) bind(C)
kono
parents:
diff changeset
29 import
kono
parents:
diff changeset
30 integer(c_int), intent(in) :: x
kono
parents:
diff changeset
31 end function a
kono
parents:
diff changeset
32 end interface
kono
parents:
diff changeset
33 integer(c_int), intent(in) :: arg
kono
parents:
diff changeset
34 integer(c_int), intent(in) :: res
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
35 if(a(arg) /= res) STOP 2
111
kono
parents:
diff changeset
36 end subroutine test_func
kono
parents:
diff changeset
37 end module test_mod
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 program main
kono
parents:
diff changeset
40 use test_mod
kono
parents:
diff changeset
41 implicit none
kono
parents:
diff changeset
42 integer :: a
kono
parents:
diff changeset
43 a = 33
kono
parents:
diff changeset
44 call test_sub (one, a, 7*33)
kono
parents:
diff changeset
45 a = 23
kono
parents:
diff changeset
46 call test_func(two, a, -123*23)
kono
parents:
diff changeset
47 contains
kono
parents:
diff changeset
48 subroutine one(x) bind(c)
kono
parents:
diff changeset
49 integer(c_int),intent(inout) :: x
kono
parents:
diff changeset
50 x = 7*x
kono
parents:
diff changeset
51 end subroutine one
kono
parents:
diff changeset
52 integer(c_int) function two(y) bind(c)
kono
parents:
diff changeset
53 integer(c_int),intent(in) :: y
kono
parents:
diff changeset
54 two = -123*y
kono
parents:
diff changeset
55 end function two
kono
parents:
diff changeset
56 end program main