gdb/fortran: Handle older TYPE*SIZE typenames
This patch adds support for the older TYPE*SIZE typenames that are still around in older code. For implementation this currently reuses the kind mechanism, as under gFortran the kind number is equivalent to the size, however, this is not necessarily true for all compilers. If the rules for other compilers are better understood then this code might need to be improved slightly to allow for a distinction between size and kind, however, adding this extra complexity now seems pointless. gdb/ChangeLog: * f-exp.y (direct_abs_decl): Handle TYPE*SIZE type names. gdb/testsuite/ChangeLog: * gdb.fortran/type-kinds.exp: Extend to cover TYPE*SIZE cases.
This commit is contained in:
parent
0841c79a3d
commit
efbecbc143
|
@ -1,3 +1,7 @@
|
|||
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* f-exp.y (direct_abs_decl): Handle TYPE*SIZE type names.
|
||||
|
||||
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
Chris January <chris.january@arm.com>
|
||||
David Lecomber <david.lecomber@arm.com>
|
||||
|
|
|
@ -570,6 +570,8 @@ direct_abs_decl: '(' abs_decl ')'
|
|||
{ $$ = $2; }
|
||||
| '(' KIND '=' INT ')'
|
||||
{ push_kind_type ($4.val, $4.type); }
|
||||
| '*' INT
|
||||
{ push_kind_type ($2.val, $2.type); }
|
||||
| direct_abs_decl func_mod
|
||||
{ push_type (tp_function); }
|
||||
| func_mod
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gdb.fortran/type-kinds.exp: Extend to cover TYPE*SIZE cases.
|
||||
|
||||
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gdb.fortran/intrinsics.exp: Extend to cover ABS.
|
||||
|
|
|
@ -65,11 +65,34 @@ proc test_parsing_invalid_type_kinds {} {
|
|||
}
|
||||
}
|
||||
|
||||
# Perform some basic checks that GDB can parse the older style
|
||||
# TYPE*SIZE type names.
|
||||
proc test_old_star_type_sizes {} {
|
||||
gdb_test "p ((character*1) 1)" " = 1 '\\\\001'"
|
||||
|
||||
gdb_test "p ((complex*4) 1)" " = \\(1,0\\)"
|
||||
gdb_test "p ((complex*8) 1)" " = \\(1,0\\)"
|
||||
gdb_test "p ((complex*16) 1)" " = \\(1,0\\)"
|
||||
|
||||
gdb_test "p ((real*4) 1)" " = 1"
|
||||
gdb_test "p ((real*8) 1)" " = 1"
|
||||
gdb_test "p ((real*16) 1)" " = 1"
|
||||
|
||||
gdb_test "p ((logical*1) 1)" " = \\.TRUE\\."
|
||||
gdb_test "p ((logical*4) 1)" " = \\.TRUE\\."
|
||||
gdb_test "p ((logical*8) 1)" " = \\.TRUE\\."
|
||||
|
||||
gdb_test "p ((integer*2) 1)" " = 1"
|
||||
gdb_test "p ((integer*4) 1)" " = 1"
|
||||
gdb_test "p ((integer*8) 1)" " = 1"
|
||||
}
|
||||
|
||||
clean_restart
|
||||
|
||||
if [set_lang_fortran] then {
|
||||
test_basic_parsing_of_type_kinds
|
||||
test_parsing_invalid_type_kinds
|
||||
test_old_star_type_sizes
|
||||
} else {
|
||||
warning "$test_name tests suppressed." 0
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue