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