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>
|
2020-10-17 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
PR symtab/26317
|
PR symtab/26317
|
||||||
|
|
|
@ -950,16 +950,7 @@ create_range_type (struct type *result_type, struct type *index_type,
|
||||||
|
|
||||||
result_type->set_bounds (bounds);
|
result_type->set_bounds (bounds);
|
||||||
|
|
||||||
if (low_bound->kind () == PROP_CONST && low_bound->const_val () >= 0)
|
result_type->set_is_unsigned (index_type->is_unsigned ());
|
||||||
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_endianity_is_not_default
|
result_type->set_endianity_is_not_default
|
||||||
(index_type->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);
|
m2_value_print_inner (v, stream, recurse, options);
|
||||||
break;
|
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 */
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
case TYPE_CODE_REF:
|
case TYPE_CODE_REF:
|
||||||
|
|
|
@ -893,16 +893,6 @@ generic_value_print (struct value *val, struct ui_file *stream, int recurse,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPE_CODE_RANGE:
|
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:
|
case TYPE_CODE_INT:
|
||||||
generic_value_print_int (val, stream, options);
|
generic_value_print_int (val, stream, options);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue