gdb/fortran: add support for 'SIZE' keyword
authorAndrew Burgess <andrew.burgess@embecosm.com>
Thu, 25 Feb 2021 16:15:52 +0000 (16:15 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 9 Mar 2021 09:51:23 +0000 (09:51 +0000)
commit7ba155b37073a3512c85f1d7f12dbaed9a6db3e2
tree41e98c0082c4cae7c641a83851708fef750eec8e
parente14816a8ba5ecf8d7c0125a08afe87fb7d1a6bba
gdb/fortran: add support for 'SIZE' keyword

Add support for the 'SIZE' keyword to the Fortran expression parser.
This returns the number of elements either in an entire array (passing
a single argument to SIZE), or in a particular dimension of an
array (passing two arguments to SIZE).

At this point I have not added support for the optional third argument
to SIZE, which controls the exact integer type of the result.

gdb/ChangeLog:

* f-exp.y (eval_op_f_array_size): Declare 1 and 2 argument forms
of this function.
(expr::fortran_array_size_1arg): New type.
(expr::fortran_array_size_2arg): Likewise.
* f-exp.y (exp): Handle FORTRAN_ARRAY_SIZE after parsing
UNOP_OR_BINOP_INTRINSIC.
(f77_keywords): Add "size" keyword.
* f-lang.c (fortran_array_size): New function.
(eval_op_f_array_size): New function, has a 1 arg and 2 arg form.
* std-operator.def (FORTRAN_ARRAY_SIZE): New operator.

gdb/testsuite/ChangeLog:

* gdb.fortran/size.exp: New file.
* gdb.fortran/size.f90: New file.
gdb/ChangeLog
gdb/f-exp.h
gdb/f-exp.y
gdb/f-lang.c
gdb/std-operator.def
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.fortran/size.exp [new file with mode: 0644]
gdb/testsuite/gdb.fortran/size.f90 [new file with mode: 0644]