https://github.com/da-viper updated https://github.com/llvm/llvm-project/pull/156033
>From 09ad3b0137c3939a76e91409e8194215c1cd94a1 Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <[email protected]> Date: Fri, 29 Aug 2025 15:17:29 +0100 Subject: [PATCH 1/2] [lldb] fix std::unordered_map formatter for const types. the type that is checked in isUnordered may be const qualified. --- .../Language/CPlusPlus/LibCxxUnorderedMap.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp index f88a5319068a2..ef49c4e6055a8 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp @@ -113,10 +113,11 @@ CompilerType lldb_private::formatters::LibcxxStdUnorderedMapSyntheticFrontEnd:: // wraps a std::pair. Peel away the internal wrapper type - whose structure is // of no value to users, to expose the std::pair. This matches the structure // returned by the std::map synthetic provider. - if (isUnorderedMap(m_backend.GetCompilerType() - .GetNonReferenceType() - .GetCanonicalType() - .GetTypeName())) { + CompilerType backend_type = m_backend.GetCompilerType(); + if (backend_type.IsPointerOrReferenceType()) + backend_type = backend_type.GetPointeeType(); + + if (isUnorderedMap(backend_type.GetCanonicalType().GetTypeName())) { std::string name; CompilerType field_type = element_type.GetFieldAtIndex(0, name, nullptr, nullptr, nullptr); @@ -165,9 +166,9 @@ lldb::ValueObjectSP lldb_private::formatters:: ValueObjectSP hash_sp = node_sp->GetChildMemberWithName("__hash_"); if (!hash_sp || !value_sp) { node_sp = m_next_element->Cast(m_node_type.GetPointerType()) - ->Dereference(error); + ->Dereference(error); if (!node_sp || error.Fail()) - return nullptr; + return nullptr; hash_sp = node_sp->GetChildMemberWithName("__hash_"); if (!hash_sp) >From f0181ef6fa9c2771514a05f0ff41459e196a876f Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <[email protected]> Date: Fri, 12 Sep 2025 12:01:34 +0100 Subject: [PATCH 2/2] [lldb] fix std::unordered_map formatter for const types. the type that is checked in isUnordered may be const qualified. --- lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp index ef49c4e6055a8..4b183a8d62e53 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp @@ -166,9 +166,9 @@ lldb::ValueObjectSP lldb_private::formatters:: ValueObjectSP hash_sp = node_sp->GetChildMemberWithName("__hash_"); if (!hash_sp || !value_sp) { node_sp = m_next_element->Cast(m_node_type.GetPointerType()) - ->Dereference(error); + ->Dereference(error); if (!node_sp || error.Fail()) - return nullptr; + return nullptr; hash_sp = node_sp->GetChildMemberWithName("__hash_"); if (!hash_sp) _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
