-2020-08-25 Gaius Mulley <gaiusmod2@gmail.com>
-
- PR m2/26372
- * m2-exp.y: Rewrite array subscript rules to support multidimension
- array access. (ArgumentList) replaces non_empty_arglist.
-
2020-08-24 Simon Marchi <simon.marchi@polymtl.ca>
* value.h (valprint_check_validity): Move declaration from
;
-/* Modula-2 array subscript notation [a,b,c...]. */
-exp : exp '[' ArgumentList ']' %prec DOT
- {
- if (pstate->arglist_len > 1)
- {
- write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
- write_exp_elt_longcst (pstate, pstate->arglist_len);
- write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
- }
- else
- write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT);
- }
+/* Modula-2 array subscript notation [a,b,c...] */
+exp : exp '['
+ /* This function just saves the number of arguments
+ that follow in the list. It is *not* specific to
+ function types */
+ { pstate->start_arglist(); }
+ non_empty_arglist ']' %prec DOT
+ { write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
+ write_exp_elt_longcst (pstate,
+ pstate->end_arglist());
+ write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT); }
+ ;
+
+exp : exp '[' exp ']'
+ { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
;
exp : exp '('
write_exp_elt_opcode (pstate, OP_FUNCALL); }
;
-/* Non empty argument list. */
-ArgumentList:
- exp
+arglist :
+ ;
+
+arglist : exp
{ pstate->arglist_len = 1; }
-| ArgumentList ',' exp
- { pstate->arglist_len++; }
;
-arglist :
+arglist : arglist ',' exp %prec ABOVE_COMMA
+ { pstate->arglist_len++; }
;
-arglist : exp
+non_empty_arglist
+ : exp
{ pstate->arglist_len = 1; }
;
-arglist : arglist ',' exp %prec ABOVE_COMMA
+non_empty_arglist
+ : non_empty_arglist ',' exp %prec ABOVE_COMMA
{ pstate->arglist_len++; }
;
-2020-08-25 Gaius Mulley <gaiusmod2@gmail.com>
-
- PR m2/26372
- * testsuite/gdb.modula2/multidim.exp: New file.
- * testsuite/gdb.modula2/multidim.c: New file.
-
2020-08-24 Simon Marchi <simon.marchi@polymtl.ca>
* lib/gdb.exp (runto): Always emit fail on internal error.
+++ /dev/null
-/* This test script is part of GDB, the GNU debugger.
-
- Copyright 2020 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/>. */
-
-
-static int a[10][20];
-
-static void
-here (void)
-{
-}
-
-int
-main ()
-{
- int i, j;
- int count = 0;
-
- for (i = 0; i < 10; i++)
- for (j = 0; j < 20; j++)
- {
- a[i][j] = count;
- count += 1;
- }
- here ();
-}
+++ /dev/null
-# Copyright 2020 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/>.
-
-# This file is part of the gdb testsuite. It contains tests for printing
-# the elements of an unbounded array using the Modula-2 language mode of
-# gdb.
-
-standard_testfile multidim.c
-
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug quiet}]} {
- return -1
-}
-
-if ![runto here] then {
- perror "couldn't run to breakpoint foo"
- continue
-}
-
-gdb_test "set lang modula-2" ".*does not match.*" "switch to modula-2"
-
-gdb_test "print a\[1,2\]" ".*= 22.*" "second row third column"
-gdb_test "print a\[2,1\]" ".*= 41.*" "fifth row second column"