mgorny created this revision.
mgorny added reviewers: labath, krytarowski, emaste.
mgorny requested review of this revision.

Update the value_regs and invalidate_regs pointers in RegisterInfo
to use the copy made by DynamicRegisterInfo.  This permits passing
temporaries as value_regs and invalidate_regs to
DynamicregisterInfo::AddRegister().


https://reviews.llvm.org/D109879

Files:
  lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp


Index: lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
===================================================================
--- lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
+++ lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
@@ -402,12 +402,22 @@
   assert(reg_info.name);
   uint32_t i;
   if (reg_info.value_regs) {
-    for (i = 0; reg_info.value_regs[i] != LLDB_INVALID_REGNUM; ++i)
-      m_value_regs_map[reg_num].push_back(reg_info.value_regs[i]);
+    reg_num_collection &regs = m_value_regs_map[reg_num];
+    for (i = 0;; ++i) {
+      regs.push_back(reg_info.value_regs[i]);
+      if (reg_info.value_regs[i] == LLDB_INVALID_REGNUM)
+        break;
+    }
+    reg_info.value_regs = regs.data();
   }
   if (reg_info.invalidate_regs) {
-    for (i = 0; reg_info.invalidate_regs[i] != LLDB_INVALID_REGNUM; ++i)
-      m_invalidate_regs_map[reg_num].push_back(reg_info.invalidate_regs[i]);
+    reg_num_collection &regs = m_invalidate_regs_map[reg_num];
+    for (i = 0;; ++i) {
+      regs.push_back(reg_info.invalidate_regs[i]);
+      if (reg_info.invalidate_regs[i] == LLDB_INVALID_REGNUM)
+        break;
+    }
+    reg_info.invalidate_regs = regs.data();
   }
   if (reg_info.dynamic_size_dwarf_expr_bytes) {
     for (i = 0; i < reg_info.dynamic_size_dwarf_len; ++i)


Index: lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
===================================================================
--- lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
+++ lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
@@ -402,12 +402,22 @@
   assert(reg_info.name);
   uint32_t i;
   if (reg_info.value_regs) {
-    for (i = 0; reg_info.value_regs[i] != LLDB_INVALID_REGNUM; ++i)
-      m_value_regs_map[reg_num].push_back(reg_info.value_regs[i]);
+    reg_num_collection &regs = m_value_regs_map[reg_num];
+    for (i = 0;; ++i) {
+      regs.push_back(reg_info.value_regs[i]);
+      if (reg_info.value_regs[i] == LLDB_INVALID_REGNUM)
+        break;
+    }
+    reg_info.value_regs = regs.data();
   }
   if (reg_info.invalidate_regs) {
-    for (i = 0; reg_info.invalidate_regs[i] != LLDB_INVALID_REGNUM; ++i)
-      m_invalidate_regs_map[reg_num].push_back(reg_info.invalidate_regs[i]);
+    reg_num_collection &regs = m_invalidate_regs_map[reg_num];
+    for (i = 0;; ++i) {
+      regs.push_back(reg_info.invalidate_regs[i]);
+      if (reg_info.invalidate_regs[i] == LLDB_INVALID_REGNUM)
+        break;
+    }
+    reg_info.invalidate_regs = regs.data();
   }
   if (reg_info.dynamic_size_dwarf_expr_bytes) {
     for (i = 0; i < reg_info.dynamic_size_dwarf_len; ++i)
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to