clayborg added a comment. m_has_children was used to represent what was in the DWARF in the byte that follows the DW_TAG. m_empty_children was used for DIEs that said they had children but actually only contain a single NULL tag. It is fine to not differentiate between the two.
================ Comment at: source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h:282 // If zero this die has no parent - uint32_t m_sibling_idx : 31, // How many to add to "this" to get the sibling. - m_empty_children : 1; // If a DIE says it had children, yet it just - // contained a NULL tag, this will be set. + uint32_t m_sibling_idx; // How many to add to "this" to get the sibling. uint32_t m_abbr_idx : DIE_ABBR_IDX_BITSIZE, ---------------- We might want to move m_has_children where m_empty_children used to be and give a bit back to m_abbr_idx by increasing DIE_ABBR_IDX_BITSIZE by 1. We have a few bits to spare in m_sibling_idx since it is the number of dies to advance by to get to the sibling. Since DIEs at the very least are a few bytes, having a 2GB advance instead of 4GB is plenty. ================ Comment at: source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h:285-287 + // It is zero if a DIE says it had + // children, yet it just contained + // a NULL tag. ---------------- This comment is wrong. The DWARF encodes if a DIE has children in the .debug_info, but we may override this value if the DIE only contains an NULL terminating DIE. It should read something like: ``` // If it is zero, then the DIE doesn't have children, or the // DWARF claimed it had children but the DIE only contained // a single NULL terminating child. ``` Repository: rLLDB LLDB https://reviews.llvm.org/D53321 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits