diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90 | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90 b/gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90 new file mode 100644 index 000000000..efadb6d14 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90 @@ -0,0 +1,27 @@ +! { dg-do compile } +! +! PR fortran/33231 +! +! Elemental function: +! Intent OUT/INOUT dummy: Actual needs to be an array +! if any actual is an array +! +program prog +implicit none +integer :: i, j(2) +call sub(i,1,2) ! OK, only scalar +call sub(j,1,2) ! OK, scalar IN, array OUT +call sub(j,[1,2],3) ! OK, scalar & array IN, array OUT +call sub(j,[1,2],[1,2]) ! OK, all arrays + +call sub(i,1,2) ! OK, only scalar +call sub(i,[1,2],3) ! { dg-error "is a scalar" } +call sub(i,[1,2],[1,2]) ! { dg-error "is a scalar" } +contains +elemental subroutine sub(a,b,c) + integer :: func, a, b, c + intent(in) :: b,c + intent(out) :: a + a = b +c +end subroutine sub +end program prog |