Make range types inherit signed-ness from base type
I ran across this comment in valprint.c: /* FIXME: create_static_range_type does not set the unsigned bit in a range type (I think it probably should copy it from the target type), so we won't print values which are too large to fit in a signed integer correctly. */ It seems to me that a range type ought to inherit its signed-ness from the underlying type, so this patch implements this change, and removes the comment. (It was also copied into m2-valprint.c.) I also remove the comment about handling ranges of enums, because I think that comment is incorrect. gdb/ChangeLog 2020-10-17 Tom Tromey <tom@tromey.com> * valprint.c (generic_value_print): Remove comment. * m2-valprint.c (m2_value_print_inner): Remove comment. * gdbtypes.c (create_range_type): Set TYPE_UNSIGNED from base type.
This commit is contained in:
parent
9717970a4e
commit
cfabbd351a
4 changed files with 8 additions and 27 deletions
|
@ -1,3 +1,10 @@
|
|||
2020-10-17 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* valprint.c (generic_value_print): Remove comment.
|
||||
* m2-valprint.c (m2_value_print_inner): Remove comment.
|
||||
* gdbtypes.c (create_range_type): Set TYPE_UNSIGNED from base
|
||||
type.
|
||||
|
||||
2020-10-17 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR symtab/26317
|
||||
|
|
|
@ -950,16 +950,7 @@ create_range_type (struct type *result_type, struct type *index_type,
|
|||
|
||||
result_type->set_bounds (bounds);
|
||||
|
||||
if (low_bound->kind () == PROP_CONST && low_bound->const_val () >= 0)
|
||||
result_type->set_is_unsigned (true);
|
||||
|
||||
/* Ada allows the declaration of range types whose upper bound is
|
||||
less than the lower bound, so checking the lower bound is not
|
||||
enough. Make sure we do not mark a range type whose upper bound
|
||||
is negative as unsigned. */
|
||||
if (high_bound->kind () == PROP_CONST && high_bound->const_val () < 0)
|
||||
result_type->set_is_unsigned (false);
|
||||
|
||||
result_type->set_is_unsigned (index_type->is_unsigned ());
|
||||
result_type->set_endianity_is_not_default
|
||||
(index_type->endianity_is_not_default ());
|
||||
|
||||
|
|
|
@ -448,13 +448,6 @@ m2_value_print_inner (struct value *val, struct ui_file *stream, int recurse,
|
|||
m2_value_print_inner (v, stream, recurse, options);
|
||||
break;
|
||||
}
|
||||
/* FIXME: create_static_range_type does not set the unsigned bit in a
|
||||
range type (I think it probably should copy it from the target
|
||||
type), so we won't print values which are too large to
|
||||
fit in a signed integer correctly. */
|
||||
/* FIXME: Doesn't handle ranges of enums correctly. (Can't just
|
||||
print with the target type, though, because the size of our type
|
||||
and the target type might differ). */
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case TYPE_CODE_REF:
|
||||
|
|
|
@ -893,16 +893,6 @@ generic_value_print (struct value *val, struct ui_file *stream, int recurse,
|
|||
break;
|
||||
|
||||
case TYPE_CODE_RANGE:
|
||||
/* FIXME: create_static_range_type does not set the unsigned bit in a
|
||||
range type (I think it probably should copy it from the
|
||||
target type), so we won't print values which are too large to
|
||||
fit in a signed integer correctly. */
|
||||
/* FIXME: Doesn't handle ranges of enums correctly. (Can't just
|
||||
print with the target type, though, because the size of our
|
||||
type and the target type might differ). */
|
||||
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case TYPE_CODE_INT:
|
||||
generic_value_print_int (val, stream, options);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue