[Lldb-commits] [lldb] [lldb][test] Fix unordered-map test (PR #156033)

Ebuka Ezike via lldb-commits lldb-commits at lists.llvm.org
Fri Sep 12 04:01:53 PDT 2025


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 <yerimyah1 at gmail.com>
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 <yerimyah1 at gmail.com>
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)



More information about the lldb-commits mailing list