]>
Commit | Line | Data |
---|---|---|
213516ef | 1 | # Copyright 2022-2023 Free Software Foundation, Inc. |
5d4c63a6 MR |
2 | |
3 | # This program is free software; you can redistribute it and/or modify | |
4 | # it under the terms of the GNU General Public License as published by | |
5 | # the Free Software Foundation; either version 3 of the License, or | |
6 | # (at your option) any later version. | |
7 | # | |
8 | # This program is distributed in the hope that it will be useful, | |
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | # GNU General Public License for more details. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | ||
16 | # Test the printing of element indices in Fortran arrays. | |
17 | ||
18 | if {[skip_fortran_tests]} { return -1 } | |
19 | ||
20 | load_lib fortran.exp | |
21 | ||
22 | # Build up the expected output for each array. | |
23 | set n0 {(-2)} | |
24 | set n1 {(-1)} | |
25 | set n2 {(0)} | |
26 | set n3 {(1)} | |
27 | set n4 {(2)} | |
28 | set n5 {(3)} | |
29 | set a9p9o "($n0 = 9, $n1 = 9, $n2 = 9, $n3 = 9, $n4 = 9, $n5 = 9)" | |
30 | set a1p "($n0 = 1, $n1 = 1, $n2 = 1, $n3 = 1, $n4 = 1)" | |
31 | set a1p9 "($n0 = 1, $n1 = 1, $n2 = 1, $n3 = 1, $n4 = 1, $n5 = 9)" | |
32 | set a2po "($n0 = 2, $n1 = 2, $n2 = 2, $n3 = 2, $n4 = 2)" | |
33 | set a2p "($n0 = ${a2po} $n1 = ${a2po} $n2 = ${a2po} $n3 = ${a2po}\ | |
34 | $n4 = ${a2po})" | |
35 | set a2p9o "($n0 = 2, $n1 = 2, $n2 = 2, $n3 = 2, $n4 = 2, $n5 = 9)" | |
36 | set a2p9 "($n0 = ${a2p9o} $n1 = ${a2p9o} $n2 = ${a2p9o} $n3 = ${a2p9o}\ | |
37 | $n4 = ${a2p9o} $n5 = ${a9p9o})" | |
38 | set a3po "($n0 = 3, $n1 = 3, $n2 = 3, $n3 = 3, $n4 = 3)" | |
39 | set a3p "($n0 = ${a3po} $n1 = ${a3po} $n2 = ${a3po} $n3 = ${a3po}\ | |
40 | $n4 = ${a3po})" | |
41 | set a3p "($n0 = ${a3p} $n1 = ${a3p} $n2 = ${a3p} $n3 = ${a3p} $n4 = ${a3p})" | |
42 | set a3p9o "($n0 = 3, $n1 = 3, $n2 = 3, $n3 = 3, $n4 = 3, $n5 = 9)" | |
43 | set a3p9 "($n0 = ${a3p9o} $n1 = ${a3p9o} $n2 = ${a3p9o} $n3 = ${a3p9o}\ | |
44 | $n4 = ${a3p9o} $n5 = ${a9p9o})" | |
45 | set a9p9 "($n0 = ${a9p9o} $n1 = ${a9p9o} $n2 = ${a9p9o} $n3 = ${a9p9o}\ | |
46 | $n4 = ${a9p9o} $n5 = ${a9p9o})" | |
47 | set a3p9 "($n0 = ${a3p9} $n1 = ${a3p9} $n2 = ${a3p9} $n3 = ${a3p9}\ | |
48 | $n4 = ${a3p9} $n5 = ${a9p9})" | |
49 | ||
50 | # Convert the output into a regexp. | |
51 | set r1p [string_to_regexp $a1p] | |
52 | set r1p9 [string_to_regexp $a1p9] | |
53 | set r2po [string_to_regexp $a2po] | |
54 | set r2p9o [string_to_regexp $a2p9o] | |
55 | set r2p [string_to_regexp $a2p] | |
56 | set r2p9 [string_to_regexp $a2p9] | |
57 | set r3po [string_to_regexp $a3po] | |
58 | set r3p9o [string_to_regexp $a3p9o] | |
59 | set r3p [string_to_regexp $a3p] | |
60 | set r3p9 [string_to_regexp $a3p9] | |
61 | ||
62 | set rep5 "<repeats 5 times>" | |
63 | set rep6 "<repeats 6 times>" | |
64 | ||
65 | proc array_repeat { variant } { | |
66 | global testfile srcfile | |
67 | upvar n0 n0 n1 n1 n2 n2 n5 n5 | |
68 | upvar r1p r1p r1p9 r1p9 r2po r2po r2p9o r2p9o r2p r2p r2p9 r2p9 | |
69 | upvar r3po r3po r3p9o r3p9o r3p r3p r3p9 r3p9 | |
70 | upvar a2po a2po a2p9o a2p9o a3po a3po a3p9o a3p9o | |
71 | upvar rep5 rep5 rep6 rep6 | |
72 | ||
73 | standard_testfile "${variant}.f90" | |
74 | ||
75 | if {[prepare_for_testing ${testfile}.exp ${variant} ${srcfile} \ | |
76 | {debug f90}]} { | |
77 | return -1 | |
78 | } | |
79 | ||
80 | with_test_prefix "${variant}" { | |
81 | gdb_test_no_output "set print array-indexes on" | |
82 | } | |
83 | ||
84 | if {![fortran_runto_main]} { | |
85 | perror "Could not run to main." | |
cdd42066 | 86 | return |
5d4c63a6 MR |
87 | } |
88 | ||
89 | gdb_breakpoint [gdb_get_line_number "Break here"] | |
90 | gdb_continue_to_breakpoint "${variant}" | |
91 | ||
92 | with_test_prefix "${variant}: repeats=unlimited, elements=unlimited" { | |
93 | # Check the arrays print as expected. | |
94 | gdb_test_no_output "set print repeats unlimited" | |
95 | gdb_test_no_output "set print elements unlimited" | |
96 | ||
97 | gdb_test "print array_1d" "${r1p}" | |
98 | gdb_test "print array_1d9" "${r1p9}" | |
99 | gdb_test "print array_2d" "${r2p}" | |
100 | gdb_test "print array_2d9" "${r2p9}" | |
101 | gdb_test "print array_3d" "${r3p}" | |
102 | gdb_test "print array_3d9" "${r3p9}" | |
103 | } | |
104 | ||
105 | with_test_prefix "${variant}: repeats=4, elements=unlimited" { | |
106 | # Now set the repeat limit. | |
107 | gdb_test_no_output "set print repeats 4" | |
108 | gdb_test_no_output "set print elements unlimited" | |
109 | ||
110 | gdb_test "print array_1d" \ | |
111 | [string_to_regexp "($n0 = 1, ${rep5})"] | |
112 | gdb_test "print array_1d9" \ | |
113 | [string_to_regexp "($n0 = 1, ${rep5}, $n5 = 9)"] | |
114 | gdb_test "print array_2d" \ | |
115 | [string_to_regexp "($n0 = ($n0 = 2, ${rep5}) ${rep5})"] | |
116 | gdb_test "print array_2d9" \ | |
117 | [string_to_regexp "($n0 = ($n0 = 2, ${rep5}, $n5 = 9) ${rep5}\ | |
118 | $n5 = ($n0 = 9, ${rep6}))"] | |
119 | gdb_test "print array_3d" \ | |
120 | [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}) ${rep5})\ | |
121 | ${rep5})"] | |
122 | gdb_test "print array_3d9" \ | |
123 | [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}, $n5 = 9)\ | |
124 | ${rep5} $n5 = ($n0 = 9, ${rep6}))\ | |
125 | ${rep5}\ | |
126 | $n5 = ($n0 = ($n0 = 9, ${rep6}) ${rep6}))"] | |
127 | } | |
128 | ||
129 | with_test_prefix "${variant}: repeats=unlimited, elements=12" { | |
130 | # Now set the element limit. | |
131 | gdb_test_no_output "set print repeats unlimited" | |
132 | gdb_test_no_output "set print elements 12" | |
133 | ||
134 | gdb_test "print array_1d" "${r1p}" | |
135 | gdb_test "print array_1d9" "${r1p9}" | |
136 | gdb_test "print array_2d" \ | |
137 | [string_to_regexp "($n0 = ${a2po} $n1 = ${a2po}\ | |
138 | $n2 = ($n0 = 2, $n1 = 2, ...) ...)"] | |
139 | gdb_test "print array_2d9" \ | |
140 | [string_to_regexp "($n0 = ${a2p9o} $n1 = ${a2p9o} ...)"] | |
141 | gdb_test "print array_3d" \ | |
142 | [string_to_regexp "($n0 = ($n0 = ${a3po} $n1 = ${a3po}\ | |
143 | $n2 = ($n0 = 3, $n1 = 3, ...)\ | |
144 | ...) ...)"] | |
145 | gdb_test "print array_3d9" \ | |
146 | [string_to_regexp "($n0 = ($n0 = ${a3p9o} $n1 = ${a3p9o} ...)\ | |
147 | ...)"] | |
148 | } | |
149 | ||
150 | with_test_prefix "${variant}: repeats=4, elements=12" { | |
151 | # Now set both limits. | |
152 | gdb_test_no_output "set print repeats 4" | |
153 | gdb_test_no_output "set print elements 12" | |
154 | ||
155 | gdb_test "print array_1d" \ | |
156 | [string_to_regexp "($n0 = 1, ${rep5})"] | |
157 | gdb_test "print array_1d9" \ | |
158 | [string_to_regexp "($n0 = 1, ${rep5}, $n5 = 9)"] | |
159 | gdb_test "print array_2d" \ | |
160 | [string_to_regexp "($n0 = ($n0 = 2, ${rep5})\ | |
161 | $n1 = ($n0 = 2, ${rep5})\ | |
162 | $n2 = ($n0 = 2, $n1 = 2, ...) ...)"] | |
163 | gdb_test "print array_2d9" \ | |
164 | [string_to_regexp "($n0 = ($n0 = 2, ${rep5}, $n5 = 9)\ | |
165 | $n1 = ($n0 = 2, ${rep5}, $n5 = 9) ...)"] | |
166 | gdb_test "print array_3d" \ | |
167 | [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5})\ | |
168 | $n1 = ($n0 = 3, ${rep5})\ | |
169 | $n2 = ($n0 = 3, $n1 = 3, ...) ...) ...)"] | |
170 | gdb_test "print array_3d9" \ | |
171 | [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}, $n5 = 9)\ | |
172 | $n1 = ($n0 = 3, ${rep5}, $n5 = 9)\ | |
173 | ...) ...)"] | |
174 | } | |
175 | ||
176 | with_test_prefix "${variant}: repeats=4, elements=30" { | |
177 | # Now set both limits. | |
178 | gdb_test_no_output "set print repeats 4" | |
179 | gdb_test_no_output "set print elements 30" | |
180 | ||
181 | gdb_test "print array_1d" \ | |
182 | [string_to_regexp "($n0 = 1, ${rep5})"] | |
183 | gdb_test "print array_1d9" \ | |
184 | [string_to_regexp "($n0 = 1, ${rep5}, $n5 = 9)"] | |
185 | gdb_test "print array_2d" \ | |
186 | [string_to_regexp "($n0 = ($n0 = 2, ${rep5}) ${rep5})"] | |
187 | gdb_test "print array_2d9" \ | |
188 | [string_to_regexp "($n0 = ($n0 = 2, ${rep5}, $n5 = 9) ${rep5}\ | |
189 | ...)"] | |
190 | gdb_test "print array_3d" \ | |
191 | [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}) ${rep5})\ | |
192 | $n1 = ($n0 = ($n0 = 3, ${rep5}) ...) ...)"] | |
193 | gdb_test "print array_3d9" \ | |
194 | [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}, $n5 = 9)\ | |
195 | ${rep5} ...) ...)"] | |
196 | } | |
197 | } | |
198 | ||
199 | array_repeat "array-repeat" | |
200 | array_repeat "array-slices-repeat" |