================
@@ -463,7 +467,14 @@ void UdtRecordCompleter::Record::ConstructRecord() {
       if (iter->second.empty())
         continue;
       parent = iter->second.back();
-      iter->second.pop_back();
+
+      // For structs, if the new fields come after the already added ones
+      // without overlap, go back to the root struct.
+      if (parent != &record && iter->first <= offset &&
+          record.kind == Member::Struct && is_last_end_offset(iter))
+        parent = &record;
+      else
+        iter->second.pop_back();
----------------
ZequanWu wrote:

```suggestion
      // For structs, if the new fields come after the already added ones
      // without overlap, go back to the root struct.
      if (iter->first <= offset &&
          record.kind == Member::Struct && is_last_end_offset(iter))
        parent = &record;
      else {
        parent = iter->second.back();
        iter->second.pop_back();
      }
```
Maybe move `parent = iter->second.back();` into the else branch. 

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

Reply via email to