mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 01:28:46 +00:00
Use type allocator for set types
This changes the set type creation function to accept a type allocator, and updates all the callers. Note that symbol readers should generally allocate on the relevant objfile, regardless of the underlying type of the set, which is what this patch implements. Reviewed-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
@@ -13825,7 +13825,8 @@ read_set_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
if (set_type)
|
||||
return set_type;
|
||||
|
||||
set_type = create_set_type (NULL, domain_type);
|
||||
type_allocator alloc (cu->per_objfile->objfile);
|
||||
set_type = create_set_type (alloc, domain_type);
|
||||
|
||||
attr = dwarf2_attr (die, DW_AT_byte_size, cu);
|
||||
if (attr != nullptr && attr->form_is_unsigned ())
|
||||
|
||||
@@ -1445,10 +1445,9 @@ lookup_string_range_type (struct type *string_char_type,
|
||||
}
|
||||
|
||||
struct type *
|
||||
create_set_type (struct type *result_type, struct type *domain_type)
|
||||
create_set_type (type_allocator &alloc, struct type *domain_type)
|
||||
{
|
||||
if (result_type == NULL)
|
||||
result_type = type_allocator (domain_type).new_type ();
|
||||
struct type *result_type = alloc.new_type ();
|
||||
|
||||
result_type->set_code (TYPE_CODE_SET);
|
||||
result_type->set_num_fields (1);
|
||||
|
||||
@@ -2547,7 +2547,8 @@ extern struct type *create_string_type (type_allocator &alloc,
|
||||
|
||||
extern struct type *lookup_string_range_type (struct type *, LONGEST, LONGEST);
|
||||
|
||||
extern struct type *create_set_type (struct type *, struct type *);
|
||||
extern struct type *create_set_type (type_allocator &alloc,
|
||||
struct type *domain_type);
|
||||
|
||||
extern struct type *lookup_unsigned_typename (const struct language_defn *,
|
||||
const char *);
|
||||
|
||||
@@ -2016,10 +2016,13 @@ again:
|
||||
break;
|
||||
|
||||
case 'S': /* Set type */
|
||||
type1 = read_type (pp, objfile);
|
||||
type = create_set_type (NULL, type1);
|
||||
if (typenums[0] != -1)
|
||||
*dbx_lookup_type (typenums, objfile) = type;
|
||||
{
|
||||
type1 = read_type (pp, objfile);
|
||||
type_allocator alloc (objfile);
|
||||
type = create_set_type (alloc, type1);
|
||||
if (typenums[0] != -1)
|
||||
*dbx_lookup_type (typenums, objfile) = type;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user