aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gfortran.dg/dim_sum_1.f9037
-rw-r--r--gcc/testsuite/gfortran.dg/dim_sum_2.f9037
-rw-r--r--gcc/testsuite/gfortran.dg/dim_sum_3.f9037
4 files changed, 118 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f77d27c..f7e647c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2017-07-31 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/81581
+ * gfortran.dg/dim_sum_1.f90: New test case.
+ * gfortran.dg/dim_sum_2.f90: New test case.
+ * gfortran.dg/dim_sum_3.f90: New test case.
+
2017-07-31 Martin Liska <mliska@suse.cz>
* gcc.dg/builtin-unreachable-6.c: Update scanned patterns.
diff --git a/gcc/testsuite/gfortran.dg/dim_sum_1.f90 b/gcc/testsuite/gfortran.dg/dim_sum_1.f90
new file mode 100644
index 0000000..b2fb943
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dim_sum_1.f90
@@ -0,0 +1,37 @@
+! { dg-do run }
+! { dg-shouldfail "Dim argument incorrect in SUM intrinsic: is 5, should be between 1 and 2" }
+
+program summation
+
+ integer, parameter :: n1=5, n2=7
+ integer, dimension(1:n1,1:n2) :: arr
+ integer, dimension(1:n1) :: r2
+ integer, dimension(1:n2) :: r1
+ integer :: i,j
+ character(len=80) :: c1, c2
+ character(len=50) :: fmt = '(10I5)'
+ do j=1,n2
+ do i=1,n1
+ arr(i,j) = i+j*10
+ end do
+ end do
+
+ r1 = sum(arr,dim=1)
+ write (unit=c2, fmt=fmt) r1
+ call print_sum(1,c1)
+ if (c1 /= c2) call abort
+ r2 = sum(arr,dim=2)
+ write (unit=c2, fmt=fmt) r2
+ call print_sum(2,c1)
+ if (c1 /= c2) call abort
+ call print_sum(5,c1)
+
+contains
+
+ subroutine print_sum(d, c)
+ integer, intent(in) :: d
+ character(len=80), intent(out) :: c
+ write (unit=c, fmt=fmt) sum(arr,dim=d)
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/dim_sum_2.f90 b/gcc/testsuite/gfortran.dg/dim_sum_2.f90
new file mode 100644
index 0000000..6290444
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dim_sum_2.f90
@@ -0,0 +1,37 @@
+! { dg-do run }
+! { dg-shouldfail "Dim argument incorrect in SUM intrinsic: is 5, should be between 1 and 2" }
+
+program summation
+
+ integer, parameter :: n1=5, n2=7
+ integer, dimension(1:n1,1:n2) :: arr
+ integer, dimension(1:n1) :: r2
+ integer, dimension(1:n2) :: r1
+ integer :: i,j
+ character(len=80) :: c1, c2
+ character(len=50) :: fmt = '(10I5)'
+ do j=1,n2
+ do i=1,n1
+ arr(i,j) = i+j*10
+ end do
+ end do
+
+ r1 = sum(arr,dim=1,mask=arr>23)
+ write (unit=c2, fmt=fmt) r1
+ call print_sum(1,c1)
+ if (c1 /= c2) call abort
+ r2 = sum(arr,dim=2,mask=arr>23)
+ write (unit=c2, fmt=fmt) r2
+ call print_sum(2,c1)
+ if (c1 /= c2) call abort
+ call print_sum(5,c1)
+
+contains
+
+ subroutine print_sum(d, c)
+ integer, intent(in) :: d
+ character(len=80), intent(out) :: c
+ write (unit=c, fmt=fmt) sum(arr,dim=d,mask=arr>23)
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/dim_sum_3.f90 b/gcc/testsuite/gfortran.dg/dim_sum_3.f90
new file mode 100644
index 0000000..2661b37
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dim_sum_3.f90
@@ -0,0 +1,37 @@
+! { dg-do run }
+! { dg-shouldfail "Dim argument incorrect in SUM intrinsic: is 5, should be between 1 and 2" }
+
+program summation
+
+ integer, parameter :: n1=5, n2=7
+ integer, dimension(1:n1,1:n2) :: arr
+ integer, dimension(1:n1) :: r2
+ integer, dimension(1:n2) :: r1
+ integer :: i,j
+ character(len=80) :: c1, c2
+ character(len=50) :: fmt = '(10I5)'
+ do j=1,n2
+ do i=1,n1
+ arr(i,j) = i+j*10
+ end do
+ end do
+
+ r1 = sum(arr,dim=1,mask=.true.)
+ write (unit=c2, fmt=fmt) r1
+ call print_sum(1,c1)
+ if (c1 /= c2) call abort
+ r2 = sum(arr,dim=2,mask=.true.)
+ write (unit=c2, fmt=fmt) r2
+ call print_sum(2,c1)
+ if (c1 /= c2) call abort
+ call print_sum(5,c1)
+
+contains
+
+ subroutine print_sum(d, c)
+ integer, intent(in) :: d
+ character(len=80), intent(out) :: c
+ write (unit=c, fmt=fmt) sum(arr,dim=d,mask=.true.)
+ end subroutine
+
+end