[PATCH] D49887: [DebugInfo] Add basic support for DWARF5 call site-related attributes

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 30 11:04:50 PDT 2018


dblaikie added a comment.

In https://reviews.llvm.org/D49887#1179141, @vsk wrote:

> - Gate call site info on -mllvm -callsite-debuginfo-experimental (off by default).
> - Add verifier checks for TAG_call_site. ResolveĀ verifier issues found during stage2 testing.
>
>   Here are the dSYM sizes I see in RelWithDebInfo (-O2 -g) stage2 builds of clang:
>
>   | Build | Total dSYM Size | Subprogram Count | Call Site Entries | | Baseline | 1,053,275,396 bytes | 336,411 | 0 | | -callsite-debuginfo-experimental=true | 1,066,904,289 | 343,838 | 82,399 |
>
>   There's a 1.3% increase in the overall size of the dSYM (13MB). 94% of that increase (12.3MB) is due to a size increase in the .debug_info section. The other 6% is distributed across other debugging sections.
>
>   It looks like the bulk of the size increase comes from forward-declarations of subprograms in DW_AT_call_origin. One take-away is that it might be more efficient (albeit non-conformant) to use mangled names inside of DW_AT_call_origin.
>
>   I experimented with emitting one TAG_call_site per callsite and found that this roughly doubles the number of entries (to 176,087). If we were to add return PC information to each entry, on net this would just add ~5MB to the final dSYM. This is a lot less than I expected.


Sounds like it'd be reasonable to implement a standards-conformant mode, then? & if you're going for call_all_calls - the implementation seems simpler (no need for the extra "already used" map) & not too expensive.


https://reviews.llvm.org/D49887





More information about the llvm-commits mailing list