================
@@ -125,28 +125,44 @@ ValueObject 
*ValueObjectRegisterSet::CreateChildAtIndex(size_t idx) {
   return nullptr;
 }
 
+std::optional<std::pair<size_t, const RegisterInfo *>>
+ValueObjectRegisterSet::LookupChildWithName(llvm::StringRef name) {
+  if (!m_reg_ctx_sp || !m_reg_set)
+    return {};
+
+  // See if the register exists at all in any set.
+  const RegisterInfo *reg_info = m_reg_ctx_sp->GetRegisterInfoByName(name);
+  if (!reg_info)
+    return {};
+
+  // See if this register is in this register set.
+  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)
+      return std::make_pair(i, reg_info);
+  }
+
+  return {};
+}
+
 lldb::ValueObjectSP
 ValueObjectRegisterSet::GetChildMemberWithName(llvm::StringRef name,
                                                bool can_create) {
-  ValueObject *valobj = nullptr;
-  if (m_reg_ctx_sp && m_reg_set) {
-    const RegisterInfo *reg_info = m_reg_ctx_sp->GetRegisterInfoByName(name);
-    if (reg_info != nullptr)
-      valobj = new ValueObjectRegister(*this, m_reg_ctx_sp, reg_info);
-  }
-  if (valobj)
+  if (auto maybe_child = LookupChildWithName(name)) {
+    ValueObject *valobj =
+        new ValueObjectRegister(*this, m_reg_ctx_sp, maybe_child->second);
----------------
felipepiovezan wrote:

nit: might as well just return here

https://github.com/llvm/llvm-project/pull/212727
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to