diff options
author | Nils-Christian Kempke <nils-christian.kempke@intel.com> | 2022-04-11 14:06:55 +0200 |
---|---|---|
committer | Nils-Christian Kempke <nils-christian.kempke@intel.com> | 2022-04-11 14:06:55 +0200 |
commit | 4e436fdabe216b5684b4efb6978843b2380fe32a (patch) | |
tree | fab532fa29c1587a0c280189d377f0b8ed333055 /gdb/f-lang.h | |
parent | c08ec64081d95b7a9abf35e54efaf44051aea195 (diff) | |
download | gdb-4e436fdabe216b5684b4efb6978843b2380fe32a.zip gdb-4e436fdabe216b5684b4efb6978843b2380fe32a.tar.gz gdb-4e436fdabe216b5684b4efb6978843b2380fe32a.tar.bz2 |
gdb/fortran: fix complex type in Fortran builtin types
Before this patch things like
(gdb) ptype complex*8
complex*16
(gdb) ptype complex*4
complex*8
were possible in GDB, which seems confusing for a user. The reason
is a mixup in the implementation of the Fortran COMPLEX type. In
Fortran the "*X" after a type would normally (I don't think this
is language required) specify the type's size in memory. For the
COMPLEX type the kind parameters usually (at least for GNU, Intel, Flang)
specify not the size of the whole type but the size of the individual
two REALs used to form the COMPLEX. Thus, a COMPLEX*4 will usually
consist of two REAL*4s. Internally this type was represented by a
builtin_complex_s8 - but here I think the s8 actually meant the raw
size of the type. This is confusing and I renamed the types (e.g.
builting_complex_s8 became builtin_complex_s4 according to its most
common useage) and their printed names to their language equivalent.
Additionally, I added the default COMPLEX type "COMPLEX" being the same
as a COMPLEX*4 (as is normally the case) and removed the latter. I added
a few tests for this new behavior as well.
The new behavior is
(gdb) ptype complex*8
complex*8
(gdb) ptype complex*4
complex*4
Diffstat (limited to 'gdb/f-lang.h')
-rw-r--r-- | gdb/f-lang.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gdb/f-lang.h b/gdb/f-lang.h index 512325f..4e415f2 100644 --- a/gdb/f-lang.h +++ b/gdb/f-lang.h @@ -329,9 +329,9 @@ struct builtin_f_type struct type *builtin_real; struct type *builtin_real_s8; struct type *builtin_real_s16; + struct type *builtin_complex; struct type *builtin_complex_s8; struct type *builtin_complex_s16; - struct type *builtin_complex_s32; struct type *builtin_void; }; |