diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/c_by_val_2.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/c_by_val_2.f90 | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/c_by_val_2.f90 b/gcc/testsuite/gfortran.dg/c_by_val_2.f90 new file mode 100644 index 000000000..5d638cbda --- /dev/null +++ b/gcc/testsuite/gfortran.dg/c_by_val_2.f90 @@ -0,0 +1,34 @@ +! { dg-do compile } +! { dg-options "-w" } + +program c_by_val_2 + external bar + real (4) :: bar, ar(2) = (/1.0,2.0/) + type :: mytype + integer :: i + end type mytype + type(mytype) :: z + character(8) :: c = "blooey" + real :: stmfun, x + stmfun(x)=x**2 + + x = 5 + print *, stmfun(%VAL(x)) ! { dg-error "not allowed in this context" } + print *, sin (%VAL(2.0)) ! { dg-error "not allowed in this context" } + print *, foo (%VAL(1.0)) ! { dg-error "not allowed in this context" } + call foobar (%VAL(0.5)) ! { dg-error "not allowed in this context" } + print *, bar (%VAL(z)) ! { dg-error "not of numeric type" } + print *, bar (%VAL(c)) ! { dg-error "not of numeric type" } + print *, bar (%VAL(ar)) ! { dg-error "cannot be an array" } + print *, bar (%VAL(0.0)) +contains + function foo (a) + real(4) :: a, foo + foo = cos (a) + end function foo + subroutine foobar (a) + real(4) :: a + print *, a + end subroutine foobar +end program c_by_val_2 + |