[Lldb-commits] [lldb] [lldb][SymbolFileDWARF] CompleteType: Lookup type in the declaration DIE's SymbolFile (PR #120569)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 20 03:58:28 PST 2024
Michael137 wrote:
> > In which case, GetDIEToType().lookup(decl_die) will return a nullptr. This is already a bit iffy because some of the surrounding code assumes we don't call CompleteTypeFromDWARF with a nullptr Type*. E.g., CompleteEnumType blindly dereferences it (though enums will never encounter this because their definition is fetched in ParseEnum, unlike for structures).
>
> Should we bail out early if the Type* is null and return false to tell `SymbolFileDWARFDebugMap::CompleteType` that it can not complete this type and let it iterate to the symbol file that has the entry in its map.
Just tried this. Unfortunately [we remove the CompilerType from the `GetForwardDeclCompilerTypeToDIE`](https://github.com/llvm/llvm-project/blob/d7ddc976d544528fe7f16882f5bec66c3b2a7884/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp#L1577) map inside of `CompleteType`. So in the next iteration of the `SymbolFileDWARFDebugMap::CompleteType` loop, it [won't ever call into `SymbolFileDWARF::CompleteType` again](https://github.com/llvm/llvm-project/blob/d7ddc976d544528fe7f16882f5bec66c3b2a7884/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp#L808) :(
https://github.com/llvm/llvm-project/pull/120569
More information about the lldb-commits
mailing list