This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA 3/4] Remove TYPE_TAG_NAME
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Tom Tromey <tom at tromey dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Wed, 30 May 2018 18:33:41 -0700
- Subject: Re: [RFA 3/4] Remove TYPE_TAG_NAME
- References: <20180417195125.14200-1-tom@tromey.com> <20180417195125.14200-4-tom@tromey.com>
> TYPE_TAG_NAME has been an occasional source of confusion and bugs. It
> seems to me that it is only useful for C and C++ -- but even there,
> not so much, because at least with DWARF there doesn't seem to be any
> way to wind up with a type where the name and the tag name are both
> non-NULL and different.
>
> So, this patch removes TYPE_TAG_NAME entirely. This should save a
> little memory, but more importantly, it simplifies this part of gdb.
>
> A few minor test suite adjustments were needed. In some situations
> the new code does not yield identical output to the old code.
>
> ChangeLog
> 2018-04-17 Tom Tromey <tom@tromey.com>
>
> * valops.c (enum_constant_from_type, value_namespace_elt)
> (value_maybe_namespace_elt): Update.
> * valarith.c (find_size_for_pointer_math): Update.
> * target-descriptions.c (make_gdb_type): Update.
> * symmisc.c (print_symbol): Update.
> * stabsread.c (define_symbol, read_type)
> (complain_about_struct_wipeout, add_undefined_type)
> (cleanup_undefined_types_1): Update.
> * rust-lang.c (rust_tuple_type_p, rust_slice_type_p)
> (rust_range_type_p, val_print_struct, rust_print_struct_def)
> (rust_internal_print_type, rust_composite_type)
> (rust_evaluate_funcall, rust_evaluate_subexp): Update.
> * python/py-type.c (typy_get_tag): Update.
> * p-typeprint.c (pascal_type_print_base): Update.
> * mdebugread.c (parse_symbol, parse_type): Update.
> * m2-typeprint.c (m2_long_set, m2_record_fields, m2_enum):
> Update.
> * guile/scm-type.c (gdbscm_type_tag): Update.
> * go-lang.c (sixg_string_p): Update.
> * gnu-v3-abi.c (build_gdb_vtable_type, build_std_type_info_type):
> Update.
> * gdbtypes.h (struct main_type) <tag_name>: Remove.
> (TYPE_TAG_NAME): Remove.
> * gdbtypes.c (type_name_no_tag): Simplify.
> (check_typedef, check_types_equal, recursive_dump_type)
> (copy_type_recursive, arch_composite_type): Update.
> * f-typeprint.c (f_type_print_base): Update. Print "Type" prefix
> in summary mode when needed.
> * eval.c (evaluate_funcall): Update.
> * dwarf2read.c (fixup_go_packaging, read_structure_type)
> (process_structure_scope, read_enumeration_type)
> (read_namespace_type, read_module_type, determine_prefix): Update.
> * cp-support.c (inspect_type): Update.
> * coffread.c (process_coff_symbol, decode_base_type): Update.
> * c-varobj.c (c_is_path_expr_parent): Update.
> * c-typeprint.c (c_type_print_base_struct_union): Update.
> (c_type_print_base_1): Update. Print struct/class/union/enum in
> summary when using C language.
> * ax-gdb.c (gen_struct_ref, gen_namespace_elt)
> (gen_maybe_namespace_elt): Update.
> * ada-lang.c (ada_type_name): Simplify.
> (empty_record, ada_template_to_fixed_record_type_1)
> (template_to_static_fixed_type)
> (to_record_with_fixed_variant_part, ada_check_typedef): Update.
>
> testsuite/ChangeLog
> 2018-04-17 Tom Tromey <tom@tromey.com>
>
> * gdb.xml/tdesc-regs.exp (load_description): Update expected
> results.
> * gdb.dwarf2/method-ptr.exp: Set language to C++.
> * gdb.dwarf2/member-ptr-forwardref.exp: Set language to C++.
> * gdb.cp/typeid.exp (do_typeid_tests): Update type_re.
> * gdb.base/maint.exp (maint_pass_if): Update.
This looks good to me. Perhaps add the comment that Keith mentioned
about the use of language_minimal in c_type_print_base_1. Sometimes,
I wonder whether we might have over-engineered that thing.
Thanks!
--
Joel