[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