[PATCHv2 00/10] Fortran Array Slicing and Striding Support

Andrew Burgess
2020-08-26T14:49:26Z

Since the V1 series I have rebased these patches on top of Pedro's
enum-flags rewrite[1]. As such patches 1 -> 4 should not be reviewed
in this sereis, but at[1].

The actual content of the remaining patches has not changed since the
V1 series. I'm still keen to get any feedback.

Patches 5, 6, 7, and 9 are independent of the earlier patches, and could be
merged before the GDB 10 branching if I get positive feedback.

Patches 8 and 10 I'd like to leave until after the GDB 10 branch has
been created, it's these patches that depend on the earlier 1->4 patch
series.

All feedback welcome.

Thanks,
Andrew

[1] https://sourceware.org/pipermail/gdb-patches/2020-August/171392.html

----

Andrew Burgess (7):
gdb: additional changes to make use of type_instance_flags more
gdb/fortran: Clean up array/string expression evaluation
gdb/fortran: Move Fortran expression handling into f-lang.c
gdb/fortran: Change whitespace when printing arrays
gdb: Convert enum range_type to a bit field enum
gdb/testsuite: Add missing expected results
gdb/fortran: Add support for Fortran array slices at the GDB prompt

Pedro Alves (3):
Rewrite valid-expr.h's internals in terms of the detection idiom
(C++17/N4502)
Use type_instance_flags more throughout
Rewrite enum_flags, add unit tests, fix problems

gdb/ChangeLog | 121 +++
gdb/Makefile.in | 2 +
gdb/NEWS | 13 +
gdb/avr-tdep.c | 13 +-
gdb/btrace.c | 4 +-
gdb/compile/compile-c-types.c | 3 +-
gdb/compile/compile-cplus-symbols.c | 4 +-
gdb/compile/compile-cplus-types.c | 10 +-
gdb/doc/ChangeLog | 7 +
gdb/doc/gdb.texinfo | 30 +
gdb/dwarf2/read.c | 7 +-
gdb/eval.c | 227 +----
gdb/expprint.c | 114 ++-
gdb/expression.h | 39 +-
gdb/f-array-walker.h | 255 ++++++
gdb/f-exp.y | 52 +-
gdb/f-lang.c | 779 ++++++++++++++++++
gdb/f-lang.h | 19 +-
gdb/f-valprint.c | 187 +++--
gdb/fortran-operator.def | 8 +
gdb/ft32-tdep.c | 13 +-
gdb/gdbarch.c | 8 +-
gdb/gdbarch.h | 16 +-
gdb/gdbarch.sh | 10 +-
gdb/gdbtypes.c | 70 +-
gdb/gdbtypes.h | 15 +-
gdb/go-exp.y | 2 +-
gdb/parse.c | 25 +-
gdb/parser-defs.h | 16 +
gdb/record-btrace.c | 10 +-
gdb/rust-exp.y | 21 +-
gdb/rust-lang.c | 25 +-
gdb/s390-tdep.c | 13 +-
gdb/stabsread.c | 2 +-
gdb/std-operator.def | 8 -
gdb/testsuite/ChangeLog | 22 +
.../gdb.fortran/array-slices-bad.exp | 69 ++
.../gdb.fortran/array-slices-bad.f90 | 42 +
.../gdb.fortran/array-slices-sub-slices.exp | 111 +++
.../gdb.fortran/array-slices-sub-slices.f90 | 96 +++
gdb/testsuite/gdb.fortran/array-slices.exp | 264 +++++-
gdb/testsuite/gdb.fortran/array-slices.f90 | 364 +++++++-
.../gdb.fortran/class-allocatable-array.exp | 2 +-
gdb/testsuite/gdb.fortran/multi-dim.exp | 2 +-
gdb/testsuite/gdb.fortran/vla-sizeof.exp | 4 +-
gdb/testsuite/gdb.fortran/vla-type.exp | 6 +-
gdb/testsuite/gdb.mi/mi-vla-fortran.exp | 2 +-
gdb/type-stack.c | 4 +-
gdb/unittests/enum-flags-selftests.c | 586 +++++++++++++
gdbsupport/enum-flags.h | 366 ++++++--
gdbsupport/traits.h | 67 ++
gdbsupport/valid-expr.h | 35 +-
52 files changed, 3505 insertions(+), 685 deletions(-)
create mode 100644 gdb/f-array-walker.h
create mode 100644 gdb/testsuite/gdb.fortran/array-slices-bad.exp
create mode 100644 gdb/testsuite/gdb.fortran/array-slices-bad.f90
create mode 100644 gdb/testsuite/gdb.fortran/array-slices-sub-slices.exp
create mode 100644 gdb/testsuite/gdb.fortran/array-slices-sub-slices.f90
create mode 100644 gdb/unittests/enum-flags-selftests.c

--
2.25.4