2 ! { dg-options "-std=f2008 -fall-intrinsics" }
4 ! Passing a null pointer or deallocated variable to an
5 ! optional, non-pointer, non-allocatable dummy.
9 integer, pointer :: ps
=> NULL(), pa(:) => NULL()
10 integer, allocatable
:: as
, aa(:)
20 call assumed_size(NULL(pa
))
22 call assumed_shape(pa
)
23 call assumed_shape(aa
)
25 call assumed_shape(NULL())
27 call ptr_func(.true
., ps
)
28 call ptr_func(.true
., null())
29 call ptr_func(.false
.)
32 integer, optional
:: a
33 if (present(a
)) call abort()
35 subroutine assumed_size(a
)
36 integer, optional
:: a(*)
37 if (present(a
)) call abort()
38 end subroutine assumed_size
39 subroutine assumed_shape(a
)
40 integer, optional
:: a(:)
41 if (present(a
)) call abort()
42 end subroutine assumed_shape
43 subroutine ptr_func(is_psnt
, a
)
44 integer, optional
, pointer :: a
46 if (is_psnt
.neqv
. present(a
)) call abort()
47 end subroutine ptr_func