annotate gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +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 compile }
kono
parents:
diff changeset
2 ! { dg-options "-O2 -fdump-tree-original" }
kono
parents:
diff changeset
3 !
kono
parents:
diff changeset
4 ! PR fortran/32600 c_f_pointer w/o shape
kono
parents:
diff changeset
5 ! PR fortran/32580 c_f_procpointer
kono
parents:
diff changeset
6 !
kono
parents:
diff changeset
7 ! Verify that c_f_prointer [w/o shape] and c_f_procpointer generate
kono
parents:
diff changeset
8 ! the right code - and no library call
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 program test
kono
parents:
diff changeset
11 use iso_c_binding
kono
parents:
diff changeset
12 implicit none
kono
parents:
diff changeset
13 type(c_ptr) :: cptr
kono
parents:
diff changeset
14 type(c_funptr) :: cfunptr
kono
parents:
diff changeset
15 integer(4), pointer :: fptr
kono
parents:
diff changeset
16 integer(4), pointer :: fptr_array(:)
kono
parents:
diff changeset
17 procedure(integer(4)), pointer :: fprocptr
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 call c_f_pointer(cptr, fptr)
kono
parents:
diff changeset
20 call c_f_pointer(cptr, fptr_array, [ 1 ])
kono
parents:
diff changeset
21 call c_f_procpointer(cfunptr, fprocptr)
kono
parents:
diff changeset
22 end program test
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 ! Make sure there is no function call:
kono
parents:
diff changeset
25 ! { dg-final { scan-tree-dump-times "c_f" 0 "original" } }
kono
parents:
diff changeset
26 ! { dg-final { scan-tree-dump-times "c_f_pointer" 0 "original" } }
kono
parents:
diff changeset
27 ! { dg-final { scan-tree-dump-times "c_f_pointer_i4" 0 "original" } }
kono
parents:
diff changeset
28 !
kono
parents:
diff changeset
29 ! Check scalar c_f_pointer
kono
parents:
diff changeset
30 ! { dg-final { scan-tree-dump-times " fptr = .integer.kind=4. .. cptr" 1 "original" } }
kono
parents:
diff changeset
31 !
kono
parents:
diff changeset
32 ! Array c_f_pointer:
kono
parents:
diff changeset
33 !
kono
parents:
diff changeset
34 ! { dg-final { scan-tree-dump-times " fptr_array.data = cptr;" 1 "original" } }
kono
parents:
diff changeset
35 ! { dg-final { scan-tree-dump-times " fptr_array.dim\\\[S..\\\].lbound = 1;" 1 "original" } }
kono
parents:
diff changeset
36 ! { dg-final { scan-tree-dump-times " fptr_array.dim\\\[S..\\\].ubound = " 1 "original" } }
kono
parents:
diff changeset
37 ! { dg-final { scan-tree-dump-times " fptr_array.dim\\\[S..\\\].stride = " 1 "original" } }
kono
parents:
diff changeset
38 !
kono
parents:
diff changeset
39 ! Check c_f_procpointer
kono
parents:
diff changeset
40 ! { dg-final { scan-tree-dump-times " fprocptr = .integer.kind=4. .\\*<.*>. ... cfunptr;" 1 "original" } }
kono
parents:
diff changeset
41 !