Jan Kratochvil 046f33b
From: Christoph Weinmann <christoph.t.weinmann@intel.com>
Jan Kratochvil 046f33b
[PATCH 6/6] fortran: test cases for subarray strides and slices
Jan Kratochvil 046f33b
https://sourceware.org/ml/gdb-patches/2015-12/msg00012.html
Jan Kratochvil 046f33b
Message-Id: <1448976075-11456-7-git-send-email-christoph.t.weinmann@intel.com>
Jan Kratochvil 046f33b
Jan Kratochvil 046f33b
Add test cases for subarray creation with range, literal and
Jan Kratochvil 046f33b
stride value permutations for one, two, and three dimensional
Jan Kratochvil 046f33b
arrays.
Jan Kratochvil 046f33b
Jan Kratochvil 046f33b
2013-12-04  Christoph Weinmann  <christoph.t.weinmann@intel.com>
Jan Kratochvil 046f33b
Jan Kratochvil 046f33b
testsuite/gdb.fortran/
Jan Kratochvil 046f33b
	* static-arrays.exp: New test.
Jan Kratochvil 046f33b
	* static-arrays.f90: New file.
Jan Kratochvil 046f33b
Jan Kratochvil 046f33b
Jan Kratochvil 046f33b
Jan Kratochvil 046f33b
Signed-off-by: Christoph Weinmann <christoph.t.weinmann@intel.com>
Jan Kratochvil 046f33b
---
Jan Kratochvil 046f33b
 gdb/testsuite/gdb.fortran/static-arrays.exp |  380 +++++++++++++++++++++++++++
Jan Kratochvil 046f33b
 gdb/testsuite/gdb.fortran/static-arrays.f90 |   55 ++++
Jan Kratochvil 046f33b
 2 files changed, 435 insertions(+), 0 deletions(-)
Jan Kratochvil 046f33b
 create mode 100644 gdb/testsuite/gdb.fortran/static-arrays.exp
Jan Kratochvil 046f33b
 create mode 100644 gdb/testsuite/gdb.fortran/static-arrays.f90
Jan Kratochvil 046f33b
Jan Kratochvil 046f33b
diff --git a/gdb/testsuite/gdb.fortran/static-arrays.exp b/gdb/testsuite/gdb.fortran/static-arrays.exp
Jan Kratochvil 046f33b
new file mode 100644
Jan Kratochvil 046f33b
index 0000000..077f6fb
Jan Kratochvil 046f33b
--- /dev/null
Jan Kratochvil 046f33b
+++ b/gdb/testsuite/gdb.fortran/static-arrays.exp
Jan Kratochvil 046f33b
@@ -0,0 +1,380 @@
Jan Kratochvil 046f33b
+# Copyright 2015 Free Software Foundation, Inc.
Jan Kratochvil 046f33b
+#
Jan Kratochvil 046f33b
+# Contributed by Intel Corp. <christoph.t.weinmann@intel.com>
Jan Kratochvil 046f33b
+#
Jan Kratochvil 046f33b
+# This program is free software; you can redistribute it and/or modify
Jan Kratochvil 046f33b
+# it under the terms of the GNU General Public License as published by
Jan Kratochvil 046f33b
+# the Free Software Foundation; either version 3 of the License, or
Jan Kratochvil 046f33b
+# (at your option) any later version.
Jan Kratochvil 046f33b
+#
Jan Kratochvil 046f33b
+# This program is distributed in the hope that it will be useful,
Jan Kratochvil 046f33b
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
Jan Kratochvil 046f33b
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Jan Kratochvil 046f33b
+# GNU General Public License for more details.
Jan Kratochvil 046f33b
+#
Jan Kratochvil 046f33b
+# You should have received a copy of the GNU General Public License
Jan Kratochvil 046f33b
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+standard_testfile static-arrays.f90
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+if { [prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}] } {
Jan Kratochvil 046f33b
+    return -1
Jan Kratochvil 046f33b
+}
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+if ![runto MAIN__] then {
Jan Kratochvil 046f33b
+    perror "couldn't run to breakpoint MAIN__"
Jan Kratochvil 046f33b
+    continue
Jan Kratochvil 046f33b
+}
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_breakpoint [gdb_get_line_number "BP1"]
Jan Kratochvil 046f33b
+gdb_continue_to_breakpoint "BP1" ".*BP1.*"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Tests subarrays of one dimensional arrays with subrange variations
Jan Kratochvil 046f33b
+gdb_test "print ar1" "\\$\[0-9\]+ = \\(1, 2, 3, 4, 5, 6, 7, 8, 9\\)" \
Jan Kratochvil 046f33b
+		"print ar1."
Jan Kratochvil 046f33b
+gdb_test "print ar1\(4:7\)" "\\$\[0-9\]+ = \\(4, 5, 6, 7\\)" \
Jan Kratochvil 046f33b
+		"print ar1\(4:7\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(8:\)" "\\$\[0-9\]+ = \\(8, 9\\).*" \
Jan Kratochvil 046f33b
+		"print ar1\(8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(:3\)" "\\$\[0-9\]+ = \\(1, 2, 3\\).*" \
Jan Kratochvil 046f33b
+		"print ar1\(:3\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(:\)" "\\$\[0-9\]+ = \\(1, 2, 3, 4, 5, 6, 7, 8, 9\\)" \
Jan Kratochvil 046f33b
+		"print ar1\(:\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Check assignment
Jan Kratochvil 046f33b
+gdb_test_no_output "set \$my_ary = ar1\(3:8\)"
Jan Kratochvil 046f33b
+gdb_test "print \$my_ary" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(3, 4, 5, 6, 7, 8\\)" \
Jan Kratochvil 046f33b
+		"Assignment of subarray to variable"
Jan Kratochvil 046f33b
+gdb_test_no_output "set ar1\(5\) = 42"
Jan Kratochvil 046f33b
+		gdb_test "print ar1\(3:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(3, 4, 42, 6, 7, 8\\)" \
Jan Kratochvil 046f33b
+		"print ar1\(3:8\) after assignment"
Jan Kratochvil 046f33b
+gdb_test "print \$my_ary" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(3, 4, 5, 6, 7, 8\\)" \
Jan Kratochvil 046f33b
+		"Assignment of subarray to variable after original array changed"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Test for subarrays of one dimensional arrays with literals
Jan Kratochvil 046f33b
+		gdb_test "print ar1\(3\)" "\\$\[0-9\]+ = 3" \
Jan Kratochvil 046f33b
+		"print ar1\(3\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Tests for subranges of 2 dimensional arrays with subrange variations
Jan Kratochvil 046f33b
+gdb_test "print ar2\(2:3, 3:4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 23, 33\\) \\( 24, 34\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(2:3, 3:4\)."
Jan Kratochvil 046f33b
+gdb_test "print ar2\(8:9,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 88, 98\\) \\( 89, 99\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:9,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(8:9,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 81, 91\\) \\( 82, 92\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:9,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar2\(8:,8:9\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 88, 98\\) \\( 89, 99\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:,8:9\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(8:,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 88, 98\\) \\( 89, 99\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(8:,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 81, 91\\) \\( 82, 92\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar2\(:2,2:3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 12, 22\\) \\( 13, 23\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(:2,2:3\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(:2,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 18, 28\\) \\( 19, 29\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(:2,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(:2,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 11, 21\\) \\( 12, 22\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(:2,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Test subranges of 2 dimensional arrays with literals and subrange variations
Jan Kratochvil 046f33b
+gdb_test "print ar2\(7, 3:6\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(73, 74, 75, 76\\)" \
Jan Kratochvil 046f33b
+		"print ar2\(7, 3:6\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(7,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(78, 79\\)" \
Jan Kratochvil 046f33b
+		"print ar2\(7,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(7,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(71, 72\\)" \
Jan Kratochvil 046f33b
+		"print ar2\(7,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar2\(7:8,4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(74, 84\\)" \
Jan Kratochvil 046f33b
+		"print ar2(7:8,4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(8:,4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(84, 94\\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:,4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(:2,4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(14, 24\\)" \
Jan Kratochvil 046f33b
+		"print ar2\(:2,4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(3,4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = 34" \
Jan Kratochvil 046f33b
+		"print ar2\(3,4\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Test subarrays of 3 dimensional arrays with literals and subrange variations
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:4,3:4,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 237, 337, 437\\) \\( 247, 347, 447\\) \\) \\( \\( 238, 338, 438\\) \\( 248, 348, 448\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:4,3:4,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,4:5,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 248, 348\\) \\( 258, 358\\) \\) \\( \\( 249, 349\\) \\( 259, 359\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,4:5,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,4:5,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 241, 341\\) \\( 251, 351\\) \\) \\( \\( 242, 342\\) \\( 252, 352\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,4:5,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,8:,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 287, 387\\) \\( 297, 397\\) \\) \\( \\( 288, 388\\) \\( 298, 398\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,8:,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,8:,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 288, 388\\) \\( 298, 398\\) \\) \\( \\( 289, 389\\) \\( 299, 399\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,8:,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,8:,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 281, 381\\) \\( 291, 391\\) \\) \\( \\( 282, 382\\) \\( 292, 392\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,8:,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,:2,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 217, 317\\) \\( 227, 327\\) \\) \\( \\( 218, 318\\) \\( 228, 328\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,:2,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,:2,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 218, 318\\) \\( 228, 328\\) \\) \\( \\( 219, 319\\) \\( 229, 329\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,:2,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,:2,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 211, 311\\) \\( 221, 321\\) \\) \\( \\( 212, 312\\) \\( 222, 322\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,:2,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,3:4,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 837, 937\\) \\( 847, 947\\) \\) \\( \\( 838, 938\\) \\( 848, 948\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,3:4,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,4:5,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 848, 948\\) \\( 858, 958\\) \\) \\( \\( 849, 949\\) \\( 859, 959\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,4:5,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,4:5,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 841, 941\\) \\( 851, 951\\) \\) \\( \\( 842, 942\\) \\( 852, 952\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,4:5,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,8:,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 887, 987\\) \\( 897, 997\\) \\) \\( \\( 888, 988\\) \\( 898, 998\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,8:,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,8:,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 888, 988\\) \\( 898, 998\\) \\) \\( \\( 889, 989\\) \\( 899, 999\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,8:,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,8:,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 881, 981\\) \\( 891, 991\\) \\) \\( \\( 882, 982\\) \\( 892, 992\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,8:,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,:2,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 817, 917\\) \\( 827, 927\\) \\) \\( \\( 818, 918\\) \\( 828, 928\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,:2,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,:2,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 818, 918\\) \\( 828, 928\\) \\) \\( \\( 819, 919\\) \\( 829, 929\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,:2,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,:2,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 811, 911\\) \\( 821, 921\\) \\) \\( \\( 812, 912\\) \\( 822, 922\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,:2,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,3:4,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 137, 237\\) \\( 147, 247\\) \\) \\( \\( 138, 238\\) \\( 148, 248\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3 \(:2,3:4,7:8\)."
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,3:4,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 138, 238\\) \\( 148, 248\\) \\) \\( \\( 139, 239\\) \\( 149, 249\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,3:4,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,3:4,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 131, 231\\) \\( 141, 241\\) \\) \\( \\( 132, 232\\) \\( 142, 242\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,3:4,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,8:,7:8\)" "\\$\[0-9\]+ = \\(\\( \\( 187, 287\\) \\( 197, 297\\) \\) \\( \\( 188, 288\\) \\( 198, 298\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,8:,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,8:,8:\)" "\\$\[0-9\]+ = \\(\\( \\( 188, 288\\) \\( 198, 298\\) \\) \\( \\( 189, 289\\) \\( 199, 299\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,8:,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,8:,:2\)" "\\$\[0-9\]+ = \\(\\( \\( 181, 281\\) \\( 191, 291\\) \\) \\( \\( 182, 282\\) \\( 192, 292\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,8:,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,:2,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 117, 217\\) \\( 127, 227\\) \\) \\( \\( 118, 218\\) \\( 128, 228\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,:2,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,:2,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 118, 218\\) \\( 128, 228\\) \\) \\( \\( 119, 219\\) \\( 129, 229\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,:2,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,:2,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 111, 211\\) \\( 121, 221\\) \\) \\( \\( 112, 212\\) \\( 122, 222\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,:2,:2\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+#Tests for subarrays of 3 dimensional arrays with literals and subranges
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3,3:4,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 337, 347\\) \\( 338, 348\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3,3:4,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3,4:5,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 348, 358\\) \\( 349, 359\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3,4:5,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3,4:5,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 341, 351\\) \\( 342, 352\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3,4:5,:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3,4:5,3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(343, 353\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3,4:5,3\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,8:,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 287, 297\\) \\( 288, 298\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,8:,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,8:,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 288, 298\\) \\( 289, 299\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,8:,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,8:,:2\)"\
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 281, 291\\) \\( 282, 292\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,8:,:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,8:,3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(283, 293\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,8:,3\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,:2,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 217, 227\\) \\( 218, 228\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,:2,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,:2,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 218, 228\\) \\( 219, 229\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,:2,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,:2,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 211, 221\\) \\( 212, 222\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,:2,:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2,:2,3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(213, 223\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2,:2,3\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3,4,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(347, 348\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3,4,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3,4,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(348, 349\\)" \
Jan Kratochvil 046f33b
+i		"print ar3\(3,4,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3,4,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(341, 342\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3,4,:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(5,6,7\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = 567" \
Jan Kratochvil 046f33b
+		"print ar3\(5,6,7\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3:4,6,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 367, 467\\) \\( 368, 468\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3:4,6,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3:4,6,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 368, 468\\) \\( 369, 469\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3:4,6,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3:4,6,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 361, 461\\) \\( 362, 462\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3:4,6,:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3:4,6,5\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(365, 465\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(3:4,6,5\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,6,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 867, 967\\) \\( 868, 968\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,6,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,6,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 868, 968\\) \\( 869, 969\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,6,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,6,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 861, 961\\) \\( 862, 962\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,6,:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,6,5\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(865, 965\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(8:,6,5\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,6,7:8\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 167, 267\\) \\( 168, 268\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,6,7:8\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,6,8:\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 168, 268\\) \\( 169, 269\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,6,8:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,6,:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 161, 261\\) \\( 162, 262\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,6,:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,6,5\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(165, 265\\)" \
Jan Kratochvil 046f33b
+		"print ar3\(:2,6,5\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "print ar3\(3:4,5:6,4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 354, 454\\) \\( 364, 464\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(3:4,5:6,4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(8:,5:6,4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 854, 954\\) \\( 864, 964\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:,5:6,4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(:2,5:6,4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 154, 254\\) \\( 164, 264\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(:2,5:6,4\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Stride > 1
Jan Kratochvil 046f33b
+gdb_test "print ar1\(2:6:2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(2, 4, 6\\)" \
Jan Kratochvil 046f33b
+		"print ar1\(2:6:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(2:6:2,3:4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 23, 43, 63\\) \\( 24, 44, 64\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(2:6:2,3:4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(2:6:2,3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(23, 43, 63\\)" \
Jan Kratochvil 046f33b
+		"print ar2\(2:6:2,3\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:6:2,3:5:2,4:7:3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 234, 434, 634\\) \\( 254, 454, 654\\) \\) \\( \\( 237, 437, 637\\) \\( 257, 457, 657\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:6:2,3:5:2,4:7:3\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:6:2,5,4:7:3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 254, 454, 654\\) \\( 257, 457, 657\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:6:2,5,4:7:3\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Stride < 0
Jan Kratochvil 046f33b
+gdb_test "print ar1\(8:2:-2\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(8, 6, 4, 2\\)" \
Jan Kratochvil 046f33b
+		"print ar1\(8:2:-2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(8:2:-2,3:4\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 83, 63, 43, 23\\) \\( 84, 64, 44, 24\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar2\(8:2:-2,3:4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar2\(2:6:2,3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(23, 43, 63\\)" \
Jan Kratochvil 046f33b
+		"print ar2\(2:6:2,3\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:3,7:3:-4,4:7:3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 274, 374\\) \\( 234, 334\\) \\) \\( \\( 277, 377\\) \\( 237, 337\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:3,7:3:-4,4:7:3\)"
Jan Kratochvil 046f33b
+gdb_test "print ar3\(2:6:2,5,7:4:-3\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( 257, 457, 657\\) \\( 254, 454, 654\\) \\)" \
Jan Kratochvil 046f33b
+		"print ar3\(2:6:2,5,7:4:-3\)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Tests with negative and mixed indices
Jan Kratochvil 046f33b
+gdb_test "p ar4\(2:4, -2:1, -15:-14\)" \
Jan Kratochvil 046f33b
+		"\\$\[0-9\]+ = \\(\\( \\( 261, 361, 461\\) \\( 271, 371, 471\\) \\( 281, 381, 481\\) \\( 291, 391, 491\\) \\) \\( \\( 262, 362, 462\\) \\( 272, 372, 472\\) \\( 282, 382, 482\\) \\( 292, 392, 492\\) \\) \\)" \
Jan Kratochvil 046f33b
+		"print ar4(2:4, -2:1, -15:-14)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "p ar4\(7,-6:2:3,-7\)" \
Jan Kratochvil 046f33b
+                "\\$\[0-9\]+ = \\(729, 759, 789\\)" \
Jan Kratochvil 046f33b
+                "print ar4(7,-6:2:3,-7)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "p ar4\(9:2:-2, -6:2:3, -6:-15:-3\)" \
Jan Kratochvil 046f33b
+                "\\$\[0-9\]+ = \\(\\( \\( 930, 730, 530, 330\\) \\( 960, 760, 560, 360\\) \\( 990, 790, 590, 390\\) \\) \\( \\( 927, 727, 527, 327\\) \\( 957, 757, 557, 357\\) \\( 987, 787, 587, 387\\) \\) \\( \\( 924, 724, 524, 324\\) \\( 954, 754, 554, 354\\) \\( 984, 784, 584, 384\\) \\) \\( \\( 921, 721, 521, 321\\) \\( 951, 751, 551, 351\\) \\( 981, 781, 581, 381\\) \\) \\)" \
Jan Kratochvil 046f33b
+                "print ar4(9:2:-2, -6:2:3, -6:-15:-3)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+gdb_test "p ar4\(:,:,:\)" \
Jan Kratochvil 046f33b
+                "\\$\[0-9\]+ = \\(\\( \\( 111, 211, 311, 411, 511, 611, 711, 811, .*" \
Jan Kratochvil 046f33b
+                "print ar4(:,:,:)"
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+# Provoke error messages for bad user input
Jan Kratochvil 046f33b
+gdb_test "print ar1\(0:4\)" \
Jan Kratochvil 046f33b
+		"provided bound\\(s\\) outside array bound\\(s\\)" \
Jan Kratochvil 046f33b
+		"print ar1\(0:4\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(8:12\)" \
Jan Kratochvil 046f33b
+		"provided bound\\(s\\) outside array bound\\(s\\)" \
Jan Kratochvil 046f33b
+		"print ar1\(8:12\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(8:2:\)" \
Jan Kratochvil 046f33b
+		"A syntax error in expression, near `\\)'." \
Jan Kratochvil 046f33b
+		"print ar1\(8:2:\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(8:2:2\)" \
Jan Kratochvil 046f33b
+		"Wrong value provided for stride and boundaries" \
Jan Kratochvil 046f33b
+		"print ar1\(8:2:2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(2:8:-2\)" \
Jan Kratochvil 046f33b
+		"Wrong value provided for stride and boundaries" \
Jan Kratochvil 046f33b
+		"print ar1\(2:8:-2\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(2:7:0\)" \
Jan Kratochvil 046f33b
+		"Stride must not be 0" \
Jan Kratochvil 046f33b
+		"print ar1\(2:7:0\)"
Jan Kratochvil 046f33b
+gdb_test "print ar1\(3:7\) = 42" \
Jan Kratochvil 046f33b
+		"Invalid cast." \
Jan Kratochvil 046f33b
+		"Assignment of value to subarray"
Jan Kratochvil 046f33b
diff --git a/gdb/testsuite/gdb.fortran/static-arrays.f90 b/gdb/testsuite/gdb.fortran/static-arrays.f90
Jan Kratochvil 046f33b
new file mode 100644
Jan Kratochvil 046f33b
index 0000000..af1a20c
Jan Kratochvil 046f33b
--- /dev/null
Jan Kratochvil 046f33b
+++ b/gdb/testsuite/gdb.fortran/static-arrays.f90
Jan Kratochvil 046f33b
@@ -0,0 +1,55 @@
Jan Kratochvil 046f33b
+! Copyright 2015 Free Software Foundation, Inc.
Jan Kratochvil 046f33b
+!
Jan Kratochvil 046f33b
+! Contributed by Intel Corp. <christoph.t.weinmann@intel.com>
Jan Kratochvil 046f33b
+!
Jan Kratochvil 046f33b
+! This program is free software; you can redistribute it and/or modify
Jan Kratochvil 046f33b
+! it under the terms of the GNU General Public License as published by
Jan Kratochvil 046f33b
+! the Free Software Foundation; either version 3 of the License, or
Jan Kratochvil 046f33b
+! (at your option) any later version.
Jan Kratochvil 046f33b
+!
Jan Kratochvil 046f33b
+! This program is distributed in the hope that it will be useful,
Jan Kratochvil 046f33b
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
Jan Kratochvil 046f33b
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Jan Kratochvil 046f33b
+! GNU General Public License for more details.
Jan Kratochvil 046f33b
+!
Jan Kratochvil 046f33b
+! You should have received a copy of the GNU General Public License
Jan Kratochvil 046f33b
+! along with this program.  If not, see <http://www.gnu.org/licenses/>.
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+subroutine sub
Jan Kratochvil 046f33b
+  integer, dimension(9) :: ar1
Jan Kratochvil 046f33b
+  integer, dimension(9,9) :: ar2
Jan Kratochvil 046f33b
+  integer, dimension(9,9,9) :: ar3
Jan Kratochvil 046f33b
+  integer, dimension(10,-7:3, -15:-5) :: ar4
Jan Kratochvil 046f33b
+  integer :: i,j,k
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+  ar1 = 1
Jan Kratochvil 046f33b
+  ar2 = 1
Jan Kratochvil 046f33b
+  ar3 = 1
Jan Kratochvil 046f33b
+  ar4 = 4
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+  ! Resulting array ar3 looks like ((( 111, 112, 113, 114,...)))
Jan Kratochvil 046f33b
+  do i = 1, 9, 1
Jan Kratochvil 046f33b
+    ar1(i) = i
Jan Kratochvil 046f33b
+    do j = 1, 9, 1
Jan Kratochvil 046f33b
+      ar2(i,j) = i*10 + j
Jan Kratochvil 046f33b
+      do k = 1, 9, 1
Jan Kratochvil 046f33b
+        ar3(i,j,k) = i*100 + j*10 + k
Jan Kratochvil 046f33b
+      end do
Jan Kratochvil 046f33b
+    end do
Jan Kratochvil 046f33b
+  end do
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+  do i = 1, 11, 1
Jan Kratochvil 046f33b
+    do j = -7, 3, 1
Jan Kratochvil 046f33b
+      do k = -15, -5, 1
Jan Kratochvil 046f33b
+        ar4(i,j,k) = i*100 + (j+8)*10 + (k+16)
Jan Kratochvil 046f33b
+      end do
Jan Kratochvil 046f33b
+    end do
Jan Kratochvil 046f33b
+  end do
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+  ar1(1) = 11  !BP1
Jan Kratochvil 046f33b
+  return
Jan Kratochvil 046f33b
+end
Jan Kratochvil 046f33b
+
Jan Kratochvil 046f33b
+program testprog
Jan Kratochvil 046f33b
+  call sub
Jan Kratochvil 046f33b
+end
Jan Kratochvil 046f33b
-- 
Jan Kratochvil 046f33b
1.7.0.7