From: Andrew Burgess Date: Tue, 25 Aug 2020 09:25:32 +0000 (+0100) Subject: Revert "Fix for Bug 26372 [Modula-2] Parsing of multi-subscript arrays" X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=419cca029e5d4b9b648402f9da3c38f302ca7b0a;p=binutils-gdb.git Revert "Fix for Bug 26372 [Modula-2] Parsing of multi-subscript arrays" This reverts commit 07758bdfa9e5a762f2ec0deeb51b11d6ad5fe376. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1cb2d6f617b..642cb6441b3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,9 +1,3 @@ -2020-08-25 Gaius Mulley - - 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 * value.h (valprint_check_validity): Move declaration from diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y index dba331f4054..70a3d9c483a 100644 --- a/gdb/m2-exp.y +++ b/gdb/m2-exp.y @@ -293,18 +293,21 @@ set : '{' arglist '}' ; -/* 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 '(' @@ -318,22 +321,24 @@ 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++; } ; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index aebe15dc4cb..b976a54cc51 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,9 +1,3 @@ -2020-08-25 Gaius Mulley - - PR m2/26372 - * testsuite/gdb.modula2/multidim.exp: New file. - * testsuite/gdb.modula2/multidim.c: New file. - 2020-08-24 Simon Marchi * lib/gdb.exp (runto): Always emit fail on internal error. diff --git a/gdb/testsuite/gdb.modula2/multidim.c b/gdb/testsuite/gdb.modula2/multidim.c deleted file mode 100644 index b0ce8488681..00000000000 --- a/gdb/testsuite/gdb.modula2/multidim.c +++ /dev/null @@ -1,39 +0,0 @@ -/* 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 . */ - - -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 (); -} diff --git a/gdb/testsuite/gdb.modula2/multidim.exp b/gdb/testsuite/gdb.modula2/multidim.exp deleted file mode 100644 index df7054892a5..00000000000 --- a/gdb/testsuite/gdb.modula2/multidim.exp +++ /dev/null @@ -1,34 +0,0 @@ -# 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 . - -# 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"