HomePhabricator

Add a key method to Sema to optimize debug info size

Authored by rnk on Nov 15 2019, 11:22 AM.

Description

Add a key method to Sema to optimize debug info size

It turns out that the debug info describing the Sema class is an
appreciable percentage of the total object file size of objects in Sema.
By adding a key function, clang is able to optimize the debug info size
by emitting a forward declaration in TUs that do not define the key
function.

On Windows, with clang-cl, these are the total sizes of object files in
Sema before and after this change, compiling with optimizations and
debug info:

before: 335,012 KB
after:  278,116 KB
delta:  -56,896 KB
percent: -17.0%

The effect on link time was negligible, despite having ~56MB less input.

On Linux, with clang, these are the same sizes using DWARF -g and
optimizations:

before: 603,756 KB
after:  515,340 KB
delta:  -88,416 KB
percent: -14.6%

I didn't use type units, DWARF-5, fission, or any other special flags.

Reviewed By: thakis

Differential Revision: https://reviews.llvm.org/D70340

Details

Committed
rnkNov 19 2019, 12:42 PM
Reviewer
thakis
Differential Revision
D70340: Add a key method to Sema to optimize debug info size
Parents
rG1aacf58819a2: [profile] Unbreak Fuchsia/Windows after D68351
Branches
Unknown
Tags
Unknown