[libcxx-commits] [libcxx] [libc++] Add __detected_or_t and use it to implement some of the allocator traits aliases (PR #115654)
David Blaikie via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Dec 3 10:50:03 PST 2024
dwblaikie wrote:
FWIW, seeing some substantial (multiple single-digit % of overall linked binary size, double digit % growth of the DWARF index (.debug_gnu_pubnames/.gdb_index in our case, but I expect we'll see something similar in .debug_names too (FYI @adrian-prantl ))).
The specific data we have for an easily shareable example is (though I probably don't have an exhaustive list of flags here - an estimate of flags that may be relevant to the specific numbers):
clang, debug build (-g, -gz=zstd, -gsplit-dwarf, -ggnu-pubnames):
In .o/.dwo files:
+15% .debug_gnu_pubnames
+1.12% .debug_abbrev.dwo
clang, opt build (-g, -gz=zstd, -gsplit-dwarf, -ggnu-pubnames, -fdebug-types-section):
in .o/.dwo files:
+16% .debug_gnu_pubnames
+2.7% .group (more comdat groups that aren't optimized away at compile-time?)
+1-1.5% growth in: .debug_abbrev.dwo, .crel.debug_line, .crel.eh_frame, .debug_line_str, .debug_rnglists, .eh_frame, .debug_abbrev.dwo
(and including a 1.58% increase in executable size, including a 1.17% increase in .debug_rnglists and 6% increase in .gdb_index)
Looking into it further/will update with more info as I have it.
Maybe a lot of this could be addressed by adding the nodebug attribute to this `__detected_or_t`, but that probably wouldn't account for the rangelist increases or non-debug changes like .group.
https://github.com/llvm/llvm-project/pull/115654
More information about the libcxx-commits
mailing list