aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/testsuite/gfortran.dg/optional_absent_1.f90
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2013-03-28 11:14:20 -0700
committerBen Cheng <bccheng@google.com>2013-03-28 12:40:33 -0700
commitaf0c51ac87ab2a87caa03fa108f0d164987a2764 (patch)
tree4b8b470f7c5b69642fdab8d0aa1fbc148d02196b /gcc-4.8/gcc/testsuite/gfortran.dg/optional_absent_1.f90
parentd87cae247d39ebf4f5a6bf25c932a14d2fdb9384 (diff)
downloadtoolchain_gcc-af0c51ac87ab2a87caa03fa108f0d164987a2764.tar.gz
toolchain_gcc-af0c51ac87ab2a87caa03fa108f0d164987a2764.tar.bz2
toolchain_gcc-af0c51ac87ab2a87caa03fa108f0d164987a2764.zip
[GCC 4.8] Initial check-in of GCC 4.8.0
Change-Id: I0719d8a6d0f69b367a6ab6f10eb75622dbf12771
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gfortran.dg/optional_absent_1.f90')
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/optional_absent_1.f9048
1 files changed, 48 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/optional_absent_1.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/optional_absent_1.f90
new file mode 100644
index 000000000..690c30fa2
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/optional_absent_1.f90
@@ -0,0 +1,48 @@
+! { dg-do run }
+! { dg-options "-std=f2008 -fall-intrinsics" }
+!
+! Passing a null pointer or deallocated variable to an
+! optional, non-pointer, non-allocatable dummy.
+!
+program test
+ implicit none
+ integer, pointer :: ps => NULL(), pa(:) => NULL()
+ integer, allocatable :: as, aa(:)
+
+ call scalar(ps)
+ call scalar(as)
+ call scalar()
+ call scalar(NULL())
+
+ call assumed_size(pa)
+ call assumed_size(aa)
+ call assumed_size()
+ call assumed_size(NULL(pa))
+
+ call assumed_shape(pa)
+ call assumed_shape(aa)
+ call assumed_shape()
+ call assumed_shape(NULL())
+
+ call ptr_func(.true., ps)
+ call ptr_func(.true., null())
+ call ptr_func(.false.)
+contains
+ subroutine scalar(a)
+ integer, optional :: a
+ if (present(a)) call abort()
+ end subroutine scalar
+ subroutine assumed_size(a)
+ integer, optional :: a(*)
+ if (present(a)) call abort()
+ end subroutine assumed_size
+ subroutine assumed_shape(a)
+ integer, optional :: a(:)
+ if (present(a)) call abort()
+ end subroutine assumed_shape
+ subroutine ptr_func(is_psnt, a)
+ integer, optional, pointer :: a
+ logical :: is_psnt
+ if (is_psnt .neqv. present(a)) call abort()
+ end subroutine ptr_func
+end program test