================
@@ -2306,6 +2345,11 @@ bool DWARFASTParserClang::CompleteTypeFromDWARF(const 
DWARFDIE &die,
 
   if (!die)
     return false;
+  ParsedDWARFTypeAttributes attrs(die);
----------------
ZequanWu wrote:

> The reason why this crash does not happen when attempting to complete a type 
> with no definition is because this function is the actual implementation of 
> "completing a type from a defintion". I.e., it expects to be called with a 
> definition DIE, and will never be called if there is no definition (we will 
> bail out, and possibly "forcefully" complete the type somewhere higher up the 
> stack).

Yes, it should only be called with definition DIE. This extra check just a 
double-check for it with a bit performance cost. If there's no definition DIE, 
`SymbolFileDWARF::CompleteType` does an early return. This behaviour is 
unchanged. Forceful completion behaviour is also remained unchanged, happens 
when failed to find definition DIE of a containing record type.

> If that is true, then I think Greg's patch is a better fix for this problem, 
> and it also sidesteps all of the performance/memory tradeoff discussions.

I agree. If we can ensure the DIE is always a definition DIE for both manual 
index and debug_names index at a earlier time, there's no need for this check. 
I'll remove this check when Greg's change is in.

https://github.com/llvm/llvm-project/pull/92328
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to