annotate gcc/testsuite/gfortran.dg/ISO_Fortran_binding_7.f90 @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 ! { dg-do run { target c99_runtime } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 ! { dg-additional-sources ISO_Fortran_binding_7.c }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 !
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 ! Test the fix for PR89841.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 !
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 ! Contributed by Reinhold Bader <Bader@lrz.de>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 !
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 program assumed_shape_01
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 use, intrinsic :: iso_c_binding
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 implicit none
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 type, bind(c) :: cstruct
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 integer(c_int) :: i
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 real(c_float) :: r(2)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 end type cstruct
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 interface
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 function psub(this, that, case) bind(c, name='Psuba') result(status)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 import :: c_float, c_int, cstruct
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 real(c_float) :: this(:,:)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 type(cstruct) :: that(:)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 integer(c_int), value :: case
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 integer(c_int) :: status
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 end function psub
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 end interface
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 real(c_float) :: t(3,7)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 type(cstruct), pointer :: u(:)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 type(cstruct), allocatable :: v(:)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 integer(c_int) :: st
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 allocate(u(1), source=[cstruct( 4, [1.1,2.2] ) ])
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 allocate(v(1), source=[cstruct( 4, [1.1,2.2] ) ])
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 t = 0.0
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 t(3,2) = -2.0
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 st = psub(t, u, 1)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 if (st .ne. 0) stop 1
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 st = psub(t, v, 2)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 if (st .ne. 0) stop 2
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 deallocate (u)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 deallocate (v)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 end program assumed_shape_01
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42