[Lldb-commits] [lldb] [lldb] Compare registers by LLDB register number (PR #223704)

Charles Zablit via lldb-commits lldb-commits at lists.llvm.org
Tue Sep 15 06:58:58 PDT 2026


https://github.com/charles-zablit updated https://github.com/llvm/llvm-project/pull/223704

>From 31f5320e7697777c91e4d8db736a3bc323ad95de Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Tue, 15 Sep 2026 13:11:40 +0100
Subject: [PATCH 1/2] [lldb] Compare registers by register number

---
 lldb/include/lldb/ValueObject/ValueObjectRegister.h | 2 ++
 lldb/source/ValueObject/ValueObjectRegister.cpp     | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/lldb/include/lldb/ValueObject/ValueObjectRegister.h b/lldb/include/lldb/ValueObject/ValueObjectRegister.h
index 57ee2eadce4fb..b52fa23838c51 100644
--- a/lldb/include/lldb/ValueObject/ValueObjectRegister.h
+++ b/lldb/include/lldb/ValueObject/ValueObjectRegister.h
@@ -78,6 +78,8 @@ class ValueObjectRegisterSet : public ValueObject {
   std::optional<std::pair<size_t, const RegisterInfo *>>
   LookupChildWithName(llvm::StringRef name);
 
+  static bool IsSameRegister(const RegisterInfo *a, const RegisterInfo *b);
+
   // For ValueObject only
   ValueObjectRegisterSet(const ValueObjectRegisterSet &) = delete;
   const ValueObjectRegisterSet &
diff --git a/lldb/source/ValueObject/ValueObjectRegister.cpp b/lldb/source/ValueObject/ValueObjectRegister.cpp
index 432824e7e34fb..b9f9338362aec 100644
--- a/lldb/source/ValueObject/ValueObjectRegister.cpp
+++ b/lldb/source/ValueObject/ValueObjectRegister.cpp
@@ -126,6 +126,12 @@ ValueObject *ValueObjectRegisterSet::CreateChildAtIndex(size_t idx) {
   return nullptr;
 }
 
+bool ValueObjectRegisterSet::IsSameRegister(const RegisterInfo *a,
+                                            const RegisterInfo *b) {
+  return a && b &&
+         a->kinds[eRegisterKindLLDB] == b->kinds[eRegisterKindLLDB];
+}
+
 std::optional<std::pair<size_t, const RegisterInfo *>>
 ValueObjectRegisterSet::LookupChildWithName(llvm::StringRef name) {
   if (!m_reg_ctx_sp || !m_reg_set)
@@ -140,7 +146,7 @@ ValueObjectRegisterSet::LookupChildWithName(llvm::StringRef name) {
   for (size_t i = 0; i < m_reg_set->num_registers; ++i) {
     const RegisterInfo *contained_reg_info =
         m_reg_ctx_sp->GetRegisterInfoAtIndex(m_reg_set->registers[i]);
-    if (contained_reg_info == reg_info)
+    if (IsSameRegister(contained_reg_info, reg_info))
       return std::make_pair(i, reg_info);
   }
 

>From d29fa8f2ae7be35eb43bcb918b464e9aff1fd853 Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Tue, 15 Sep 2026 14:58:46 +0100
Subject: [PATCH 2/2] fixup! [lldb] Compare registers by register number

---
 lldb/source/ValueObject/ValueObjectRegister.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lldb/source/ValueObject/ValueObjectRegister.cpp b/lldb/source/ValueObject/ValueObjectRegister.cpp
index b9f9338362aec..1a7a4560714bc 100644
--- a/lldb/source/ValueObject/ValueObjectRegister.cpp
+++ b/lldb/source/ValueObject/ValueObjectRegister.cpp
@@ -128,8 +128,7 @@ ValueObject *ValueObjectRegisterSet::CreateChildAtIndex(size_t idx) {
 
 bool ValueObjectRegisterSet::IsSameRegister(const RegisterInfo *a,
                                             const RegisterInfo *b) {
-  return a && b &&
-         a->kinds[eRegisterKindLLDB] == b->kinds[eRegisterKindLLDB];
+  return a && b && a->kinds[eRegisterKindLLDB] == b->kinds[eRegisterKindLLDB];
 }
 
 std::optional<std::pair<size_t, const RegisterInfo *>>



More information about the lldb-commits mailing list