On Thu, 30 Jul 2020, Jakub Jelinek wrote: > On Thu, Jul 30, 2020 at 11:55:19AM +0200, Richard Biener wrote: > > For cc1 this affects debug information size as follows: > > > > VM SIZE FILE SIZE > > ++++++++++++++ GROWING ++++++++++++++ > > [ = ] 0 .debug_info +1.63Mi +1.3% > > [ = ] 0 .debug_str +263Ki +3.4% > > [ = ] 0 .debug_abbrev +101Ki +4.9% > > [ = ] 0 .debug_line +5.71Ki +0.0% > > +44% +16 [Unmapped] +48 +1.2% > > > > -------------- SHRINKING -------------- > > [ = ] 0 .debug_loc -213 -0.0% > > -0.0% -48 .text -48 -0.0% > > [ = ] 0 .debug_ranges -16 -0.0% > > > > -0.0% -32 TOTAL +1.99Mi +0.6% > > > > and DWARF compression via DWZ can only shave off minor bits > > here. > > I'm surprised DWZ doesn't shave off more, the prototypes in > the different TUs should be the same and therefore mergeable.
Yeah, DWZ shaves off 60% of the .debug_info overhead, but due to the size of cc1 I have not tried figuring out what the difference in the end will be. > What could help a little if DWZ is able to merge the prototypes with > definition DIE (verify that the type is the same and there is no information > the definition doesn't have appart from DW_AT_external). DWZ could split out a shareable specification DIE from definition DIEs and use DW_AT_specification. When we bring declarations into scope elsewhere we have to avoid refering to definitions there. > > Bootstrap and regtest running on x86_64-unknown-linux-gnu. > > > > OK for trunk and backports? > > I'd go with it for trunk and 10.2.1 now and consider further backports > later. Maybe even defer the 10.2.1 backport for two weeks. So testing revealed I have to be more careful what nodes I create DIEs for. For example for g++.dg/debug/dwarf2/cdtor-1.C we'd now end up with DIEs for all of the DTOR aliases (and IIRC aliases are not subject to unused removal, nor unused members of a comdat group). In particular guarding the nodes with if (!cnode->alias && !cnode->thunk.thunk_p && !fndecl_built_in_p (cnode->decl)) seems to fix the few regressions observed. I'm retesting fully with that. Richard.