6 ! Copied from assumed_type_2.f90
10 use iso_c_binding
, only
: c_loc
, c_ptr
, c_bool
13 function my_c_loc1(x
) bind(C
)
15 !GCC$ attributes NO_ARG_CHECK :: x
17 type(c_ptr
) :: my_c_loc1
19 end interface my_c_loc
21 subroutine sub_scalar (arg1
, presnt
)
22 integer(8), target
, optional
:: arg1
25 !GCC$ attributes NO_ARG_CHECK :: arg1
26 if (presnt
.neqv
. present (arg1
)) STOP 1
28 end subroutine sub_scalar
30 subroutine sub_array_assumed (arg3
)
31 !GCC$ attributes NO_ARG_CHECK :: arg3
32 logical(1), target
:: arg3(*)
35 end subroutine sub_array_assumed
39 use iso_c_binding
, only
: c_int
, c_null_ptr
53 real, allocatable
:: scalar_real_alloc
54 character, pointer :: scalar_char_ptr
56 integer :: array_int(3)
57 real, allocatable
:: array_real_alloc(:,:)
58 character, pointer :: array_char_ptr(:,:)
61 type(t2
), allocatable
:: scalar_t2_alloc
62 type(t3
), pointer :: scalar_t3_ptr
64 type(t1
) :: array_t1(4)
65 type(t2
), allocatable
:: array_t2_alloc(:,:)
66 type(t3
), pointer :: array_t3_ptr(:,:)
68 class(t1
), allocatable
:: scalar_class_t1_alloc
69 class(t1
), pointer :: scalar_class_t1_ptr
71 class(t1
), allocatable
:: array_class_t1_alloc(:,:)
72 class(t1
), pointer :: array_class_t1_ptr(:,:)
74 scalar_char_ptr
=> null()
75 scalar_t3_ptr
=> null()
77 call sub_scalar (presnt
=.false
.)
78 call sub_scalar (scalar_real_alloc
, .false
.)
79 call sub_scalar (scalar_char_ptr
, .false
.)
80 call sub_scalar (null (), .false
.)
81 call sub_scalar (scalar_t2_alloc
, .false
.)
82 call sub_scalar (scalar_t3_ptr
, .false
.)
84 allocate (scalar_real_alloc
, scalar_char_ptr
, scalar_t3_ptr
)
85 allocate (scalar_class_t1_alloc
, scalar_class_t1_ptr
, scalar_t2_alloc
)
86 allocate (array_real_alloc(3:5,2:4), array_char_ptr(-2:2,2))
87 allocate (array_t2_alloc(3:5,2:4), array_t3_ptr(-2:2,2))
88 allocate (array_class_t1_alloc(3,3), array_class_t1_ptr(4,4))
90 call sub_scalar (scalar_int
, .true
.)
91 call sub_scalar (scalar_real_alloc
, .true
.)
92 call sub_scalar (scalar_char_ptr
, .true
.)
93 call sub_scalar (array_int(2), .true
.)
94 call sub_scalar (array_real_alloc(3,2), .true
.)
95 call sub_scalar (array_char_ptr(0,1), .true
.)
96 call sub_scalar (scalar_t1
, .true
.)
97 call sub_scalar (scalar_t2_alloc
, .true
.)
98 call sub_scalar (scalar_t3_ptr
, .true
.)
99 call sub_scalar (array_t1(2), .true
.)
100 call sub_scalar (array_t2_alloc(3,2), .true
.)
101 call sub_scalar (array_t3_ptr(0,1), .true
.)
102 call sub_scalar (array_class_t1_alloc(2,1), .true
.)
103 call sub_scalar (array_class_t1_ptr(3,3), .true
.)
105 call sub_array_assumed (array_int
)
106 call sub_array_assumed (array_real_alloc
)
107 call sub_array_assumed (array_char_ptr
)
108 call sub_array_assumed (array_t1
)
109 call sub_array_assumed (array_t2_alloc
)
110 call sub_array_assumed (array_t3_ptr
)
111 call sub_array_assumed (array_class_t1_alloc
)
112 call sub_array_assumed (array_class_t1_ptr
)
114 deallocate (scalar_char_ptr
, scalar_class_t1_ptr
, array_char_ptr
)
115 deallocate (array_class_t1_ptr
, array_t3_ptr
)
119 call sub_array_assumed (x
)