diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/dim_sum_1.f90 | 37 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/dim_sum_2.f90 | 37 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/dim_sum_3.f90 | 37 |
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 |