diff options
author | Tom Tromey <tromey@adacore.com> | 2022-11-04 14:11:56 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2022-12-01 11:16:41 -0700 |
commit | bed34ce7058b56d3a1e171de31df2a0a30afb8fd (patch) | |
tree | 5a0f810453034b7fc5d0077cb682e4a25d645a09 | |
parent | 5f0a4fb85ed3b5fb112ff884a98eb95c685658b0 (diff) | |
download | binutils-bed34ce7058b56d3a1e171de31df2a0a30afb8fd.zip binutils-bed34ce7058b56d3a1e171de31df2a0a30afb8fd.tar.gz binutils-bed34ce7058b56d3a1e171de31df2a0a30afb8fd.tar.bz2 |
Refactor cooked_index::do_finalize
This refactors cooked_index::do_finalize, reordering an 'if' to make
it a little less redundant. This change makes a subsequent patch
easier to read.
Reviewed-by: Andrew Burgess <aburgess@redhat.com>
-rw-r--r-- | gdb/dwarf2/cooked-index.c | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index adb0046..a580d54 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -196,16 +196,28 @@ cooked_index::do_finalize () for (cooked_index_entry *entry : m_entries) { gdb_assert (entry->canonical == nullptr); - if ((entry->per_cu->lang () != language_cplus - && entry->per_cu->lang () != language_ada) - || (entry->flags & IS_LINKAGE) != 0) + if ((entry->flags & IS_LINKAGE) != 0) entry->canonical = entry->name; - else + else if (entry->per_cu->lang () == language_ada) { - if (entry->per_cu->lang () == language_ada) + gdb::unique_xmalloc_ptr<char> canon_name + = handle_gnat_encoded_entry (entry, gnat_entries.get ()); + if (canon_name == nullptr) + entry->canonical = entry->name; + else + { + entry->canonical = canon_name.get (); + m_names.push_back (std::move (canon_name)); + } + } + else if (entry->per_cu->lang () == language_cplus) + { + void **slot = htab_find_slot (seen_names.get (), entry, + INSERT); + if (*slot == nullptr) { gdb::unique_xmalloc_ptr<char> canon_name - = handle_gnat_encoded_entry (entry, gnat_entries.get ()); + = cp_canonicalize_string (entry->name); if (canon_name == nullptr) entry->canonical = entry->name; else @@ -216,28 +228,13 @@ cooked_index::do_finalize () } else { - void **slot = htab_find_slot (seen_names.get (), entry, - INSERT); - if (*slot == nullptr) - { - gdb::unique_xmalloc_ptr<char> canon_name - = cp_canonicalize_string (entry->name); - if (canon_name == nullptr) - entry->canonical = entry->name; - else - { - entry->canonical = canon_name.get (); - m_names.push_back (std::move (canon_name)); - } - } - else - { - const cooked_index_entry *other - = (const cooked_index_entry *) *slot; - entry->canonical = other->canonical; - } + const cooked_index_entry *other + = (const cooked_index_entry *) *slot; + entry->canonical = other->canonical; } } + else + entry->canonical = entry->name; } m_names.shrink_to_fit (); |