summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/elemental_subroutine_5.f9027
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