Revert "Fix for Bug 26372 [Modula-2] Parsing of multi-subscript arrays"
authorAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 25 Aug 2020 09:25:32 +0000 (10:25 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 25 Aug 2020 09:25:32 +0000 (10:25 +0100)
This reverts commit 07758bdfa9e5a762f2ec0deeb51b11d6ad5fe376.

gdb/ChangeLog
gdb/m2-exp.y
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.modula2/multidim.c [deleted file]
gdb/testsuite/gdb.modula2/multidim.exp [deleted file]

index 1cb2d6f617bcdafb151b509869e00a637db4f82d..642cb6441b3438e1455a0894dffac3d0520a3b91 100644 (file)
@@ -1,9 +1,3 @@
-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
index dba331f4054d72bdddb58e804dfb2b03bd18912a..70a3d9c483a10b1baa2afc509968e3f9d15f8adf 100644 (file)
@@ -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++; }
        ;
 
index aebe15dc4cb8f5f98d9cd411c1e44654a12a21de..b976a54cc51570a3d1c9b2c647e153736c0dc46a 100644 (file)
@@ -1,9 +1,3 @@
-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.
diff --git a/gdb/testsuite/gdb.modula2/multidim.c b/gdb/testsuite/gdb.modula2/multidim.c
deleted file mode 100644 (file)
index b0ce848..0000000
+++ /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 <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 ();
-}
diff --git a/gdb/testsuite/gdb.modula2/multidim.exp b/gdb/testsuite/gdb.modula2/multidim.exp
deleted file mode 100644 (file)
index df70548..0000000
+++ /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 <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"