diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/gdbtypes.c | 14 |
2 files changed, 15 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0e01628..afdfc77 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-12-09 Simon Marchi <simon.marchi@polymtl.ca> + + * gdbtypes.c (get_discrete_low_bound, get_discrete_high_bound): + Return {} instead of false. + (get_discrete_bounds): Compute high bound only if low bound is + valid. + 2020-12-09 Simon Marchi <simon.marchi@efficios.com> PR 26875, PR 26901 diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 9a17008..3e489fd 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -1093,7 +1093,7 @@ get_discrete_low_bound (struct type *type) case TYPE_CODE_INT: if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */ - return false; + return {}; if (!type->is_unsigned ()) return -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1)); @@ -1103,7 +1103,7 @@ get_discrete_low_bound (struct type *type) return 0; default: - return false; + return {}; } } @@ -1160,7 +1160,7 @@ get_discrete_high_bound (struct type *type) case TYPE_CODE_INT: if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */ - return false; + return {}; if (!type->is_unsigned ()) { @@ -1179,7 +1179,7 @@ get_discrete_high_bound (struct type *type) } default: - return false; + return {}; } } @@ -1189,9 +1189,11 @@ bool get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp) { gdb::optional<LONGEST> low = get_discrete_low_bound (type); - gdb::optional<LONGEST> high = get_discrete_high_bound (type); + if (!low.has_value ()) + return false; - if (!low.has_value () || !high.has_value ()) + gdb::optional<LONGEST> high = get_discrete_high_bound (type); + if (!high.has_value ()) return false; *lowp = *low; |