HomePhabricator

DebugInfo: Avoid using split DWARF when the split unit would be empty.

Description

DebugInfo: Avoid using split DWARF when the split unit would be empty.

In ThinLTO many split CUs may be effectively empty because of the lack
of support for cross-unit references in split DWARF.

Using a split unit in those cases is just a waste/overhead - and turned
out to be one contributor to a significant symbolizer performance issue
when global variable debug info was being imported (see r348416 for the
primary fix) due to symbolizers seeing CUs with no ranges, assuming
there might still be addresses covered and walking into the split CU to
see if there are any ranges (when that split CU was in a DWP file, that
meant loading the DWP and its index, the index was extra large because
of all these fractured/empty CUs... and so was very expensive to load).

(the 3rd fix which will follow, is to assume that a CU with no ranges is
empty rather than merely missing its CU level range data - and to not
walk into its DIEs (split or otherwise) in search of address information
that is generally not present)

Details

Committed
dblaikieDec 14 2018, 2:44 PM
Parents
rL349206: Revert "Add extension to always default-initialize nullptr_t."
Branches
Unknown
Tags
Unknown