mirror of
git://sourceware.org/git/libabigail.git
synced 2025-01-05 00:39:31 +00:00
dwarf-reader: Fix building of void, void* and variadic parm types
This patch adds the IR nodes of void, void* and variadic parm types to their scope just once. Also, it schedules them for (sorting, hashing and) canonicalization just like other types. * src/abg-dwarf-reader.cc (build_ir_node_for_void_type) (build_ir_node_for_void_pointer_type) (build_ir_node_for_variadic_parameter_type): Add the type node to its scope just once. Use reader::schedule_type_for_late_canonicalization to canonicalize it. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
430618c879
commit
39d7e80555
@ -17158,9 +17158,12 @@ build_ir_node_for_void_type(reader& rdr)
|
||||
const environment& env = rdr.env();
|
||||
|
||||
type_base_sptr t = env.get_void_type();
|
||||
add_decl_to_scope(is_decl(t), rdr.cur_transl_unit()->get_global_scope());
|
||||
decl_base_sptr type_declaration = get_type_declaration(t);
|
||||
canonicalize(t);
|
||||
if (!has_scope(type_declaration))
|
||||
{
|
||||
add_decl_to_scope(is_decl(t), rdr.cur_transl_unit()->get_global_scope());
|
||||
rdr.schedule_type_for_late_canonicalization(t);
|
||||
}
|
||||
return type_declaration;
|
||||
}
|
||||
|
||||
@ -17179,11 +17182,13 @@ static type_or_decl_base_sptr
|
||||
build_ir_node_for_void_pointer_type(reader& rdr)
|
||||
{
|
||||
const environment& env = rdr.env();
|
||||
|
||||
type_base_sptr t = env.get_void_pointer_type();
|
||||
add_decl_to_scope(is_decl(t), rdr.cur_transl_unit()->get_global_scope());
|
||||
decl_base_sptr type_declaration = get_type_declaration(t);
|
||||
canonicalize(t);
|
||||
if (!has_scope(type_declaration))
|
||||
{
|
||||
add_decl_to_scope(is_decl(t), rdr.cur_transl_unit()->get_global_scope());
|
||||
rdr.schedule_type_for_late_canonicalization(t);
|
||||
}
|
||||
return type_declaration;
|
||||
}
|
||||
|
||||
@ -17197,11 +17202,13 @@ build_ir_node_for_variadic_parameter_type(reader &rdr)
|
||||
{
|
||||
|
||||
const environment& env = rdr.env();
|
||||
|
||||
type_base_sptr t = env.get_variadic_parameter_type();
|
||||
add_decl_to_scope(is_decl(t), rdr.cur_transl_unit()->get_global_scope());
|
||||
decl_base_sptr type_declaration = get_type_declaration(t);
|
||||
canonicalize(t);
|
||||
if (!has_scope(type_declaration))
|
||||
{
|
||||
add_decl_to_scope(is_decl(t), rdr.cur_transl_unit()->get_global_scope());
|
||||
rdr.schedule_type_for_late_canonicalization(t);
|
||||
}
|
||||
return type_declaration;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user