diff options
Diffstat (limited to 'gdb/testsuite/gdb.fortran/array-slices-repeat.f90')
-rw-r--r-- | gdb/testsuite/gdb.fortran/array-slices-repeat.f90 | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.fortran/array-slices-repeat.f90 b/gdb/testsuite/gdb.fortran/array-slices-repeat.f90 new file mode 100644 index 0000000..3b9a9e3 --- /dev/null +++ b/gdb/testsuite/gdb.fortran/array-slices-repeat.f90 @@ -0,0 +1,99 @@ +! Copyright 2022 Free Software Foundation, Inc. +! +! This program is free software; you can redistribute it and/or modify +! it under the terms of the GNU General Public License as published by +! the Free Software Foundation; either version 3 of the License, or +! (at your option) any later version. +! +! This program is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU General Public License for more details. +! +! You should have received a copy of the GNU General Public License +! along with this program. If not, see <http://www.gnu.org/licenses/>. + +subroutine show (array_1d, array_1d9, array_2d, array_2d9, array_3d, array_3d9) + integer, dimension (-2:) :: array_1d + integer, dimension (-2:) :: array_1d9 + integer, dimension (-2:, -2:) :: array_2d + integer, dimension (-2:, -2:) :: array_2d9 + integer, dimension (-2:, -2:, -2:) :: array_3d + integer, dimension (-2:, -2:, -2:) :: array_3d9 + + print *, "" ! Break here + print *, array_1d + print *, array_1d9 + print *, array_2d + print *, array_2d9 + print *, array_3d + print *, array_3d9 +end subroutine show + +! +! Start of test program. +! +program test + interface + subroutine show (array_1d, array_1d9, array_2d, array_2d9, & + array_3d, array_3d9) + integer, dimension (:) :: array_1d + integer, dimension (:) :: array_1d9 + integer, dimension (:, :) :: array_2d + integer, dimension (:, :) :: array_2d9 + integer, dimension (:, :, :) :: array_3d + integer, dimension (:, :, :) :: array_3d9 + end subroutine show + end interface + + ! Declare variables used in this test. + integer, dimension (-8:6) :: array_1d + integer, dimension (-8:9) :: array_1d9 + integer, dimension (-8:6, -8:6) :: array_2d + integer, dimension (-8:9, -8:9) :: array_2d9 + integer, dimension (-8:6, -8:6, -8:6) :: array_3d + integer, dimension (-8:9, -8:9, -8:9) :: array_3d9 + + integer, parameter :: v6 (6) = [-5, -4, -3, 1, 2, 3] + integer, parameter :: v9 (9) = [-5, -4, -3, 1, 2, 3, 7, 8, 9] + + ! Intersperse slices selected with varying data to make sure it is + ! correctly ignored for the purpose of repeated element recognition + ! in the slices. + array_1d = 7 + array_1d (::3) = 1 + array_1d9 = 7 + array_1d9 (::3) = 1 + array_1d9 (7) = 9 + array_2d = 7 + array_2d (:, v6) = 6 + array_2d (::3, ::3) = 2 + array_2d9 = 7 + array_2d9 (:, v9) = 6 + array_2d9 (::3, ::3) = 2 + array_2d9 (7, ::3) = 9 + array_2d9 (::3, 7) = 9 + array_3d = 7 + array_3d (:, v6, :) = 6 + array_3d (:, v6, v6) = 5 + array_3d (::3, ::3, ::3) = 3 + array_3d9 = 7 + array_3d9 (:, v9, :) = 6 + array_3d9 (:, v9, v9) = 5 + array_3d9 (::3, ::3, ::3) = 3 + array_3d9 (7, ::3, ::3) = 9 + array_3d9 (::3, 7, ::3) = 9 + array_3d9 (::3, ::3, 7) = 9 + + call show (array_1d (::3), array_1d9 (::3), & + array_2d (::3, ::3), array_2d9 (::3, ::3), & + array_3d (::3, ::3, ::3), array_3d9 (::3, ::3, ::3)) + + print *, array_1d + print *, array_1d9 + print *, array_2d + print *, array_2d9 + print *, array_3d + print *, array_3d9 + +end program test |