On Thu, May 16, 2019 at 11:20 AM Thomas De Schampheleire <patrickdeping...@gmail.com> wrote: > > From: Thomas De Schampheleire <thomas.de_schamphele...@nokia.com> > > In addition to making -feliminate-unused-debug-symbols work for the DWARF > format (see [1]), make this option the default. This behavior was the case > before, e.g. under gcc 4.9.x. > [1] https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=269925
I have tested this patch and it causes a few FAILs, eventually hinting at implementation issues: === g++ tests === Running target unix FAIL: g++.dg/debug/enum-2.C -gstabs -O2 scan-assembler JTI_MAX FAIL: g++.dg/debug/enum-2.C -gstabs -O3 scan-assembler JTI_MAX FAIL: g++.dg/debug/enum-2.C -gstabs+ -O2 scan-assembler JTI_MAX FAIL: g++.dg/debug/enum-2.C -gstabs+ -O3 scan-assembler JTI_MAX FAIL: g++.dg/debug/enum-2.C -gstabs+3 -O2 scan-assembler JTI_MAX FAIL: g++.dg/debug/enum-2.C -gstabs+3 -O3 scan-assembler JTI_MAX FAIL: g++.dg/debug/enum-2.C -gstabs3 -O2 scan-assembler JTI_MAX FAIL: g++.dg/debug/enum-2.C -gstabs3 -O3 scan-assembler JTI_MAX maybe expected (stabs....) FAIL: g++.dg/debug/dwarf2/fesd-any.C -std=gnu++14 scan-assembler field_head_or dy_defn_fld_head.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-any.C -std=gnu++14 scan-assembler field_head_or dy_defn_ptr_head.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-any.C -std=gnu++14 scan-assembler field_head_or dy_defn_ref_head.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-any.C -std=gnu++14 scan-assembler field_head_or dy_defn_var_head_fld.*DW_AT_name ... more ... FAIL: g++.dg/debug/dwarf2/fesd-baseonly.C -std=gnu++14 scan-assembler gstruct_ head_ordy_defn_var_head.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-baseonly.C -std=gnu++14 scan-assembler gstruct_ head_tmpl_defn_var_head<int>.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-baseonly.C -std=gnu++17 scan-assembler gstruct_ head_ordy_defn_var_head.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-baseonly.C -std=gnu++17 scan-assembler gstruct_ head_tmpl_defn_var_head<int>.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-baseonly.C -std=gnu++98 scan-assembler gstruct_ head_ordy_defn_var_head.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-baseonly.C -std=gnu++98 scan-assembler gstruct_head_tmpl_defn_var_head<int>.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-none.C -std=gnu++14 scan-assembler gstruct_head_ordy_defn_var_head.*DW_AT_name FAIL: g++.dg/debug/dwarf2/fesd-none.C -std=gnu++14 scan-assembler gstruct_head_tmpl_defn_var_head<int>.*DW_AT_name ... more fesd-* testcases FAIL ... FAIL: g++.dg/debug/dwarf2/inline-var-1.C -std=gnu++17 scan-assembler-times DW_AT_[^\\n\\r]*linkage_name 7 FAIL: g++.dg/debug/dwarf2/inline-var-1.C -std=gnu++17 scan-assembler-times DW_AT_specification 6 FAIL: g++.dg/debug/dwarf2/inline-var-1.C -std=gnu++17 scan-assembler-times 0x3[^\\n\\r]* DW_AT_inline 6 C variants of the fesd-* testcases also FAIL. Those testcases are huge, a quick look didn't reveal whether those are expected FAILs or not. Richard. > gcc/ChangeLog: > > 2019-05-16 Thomas De Schampheleire <thomas.de_schamphele...@nokia.com> > > PR debug/86964 > * common.opt (feliminate-unused-debug-symbols): Enable by default. > * doc/invoke.texi (Debugging Options): Document new default of > -feliminate-unused-debug-symbols and remove restriction to 'stabs'. > --- > gcc/common.opt | 2 +- > gcc/doc/invoke.texi | 9 +++++---- > 2 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/gcc/common.opt b/gcc/common.opt > index d342c4f3749..0e72fd08ec4 100644 > --- a/gcc/common.opt > +++ b/gcc/common.opt > @@ -1379,7 +1379,7 @@ Common Report Var(flag_ipa_sra) Init(0) Optimization > Perform interprocedural reduction of aggregates. > > feliminate-unused-debug-symbols > -Common Report Var(flag_debug_only_used_symbols) > +Common Report Var(flag_debug_only_used_symbols) Init(1) > Perform unused symbol elimination in debug info. > > feliminate-unused-debug-types > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index 5e3e8873d35..06c8c60f19e 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -388,7 +388,7 @@ Objective-C and Objective-C++ Dialects}. > -fno-eliminate-unused-debug-types @gol > -femit-struct-debug-baseonly -femit-struct-debug-reduced @gol > -femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]} @gol > --feliminate-unused-debug-symbols -femit-class-debug-always @gol > +-fno-eliminate-unused-debug-symbols -femit-class-debug-always @gol > -fno-merge-debug-strings -fno-dwarf2-cfi-asm @gol > -fvar-tracking -fvar-tracking-assignments} > > @@ -7827,10 +7827,11 @@ confusion with @option{-gdwarf-@var{level}}. > Instead use an additional @option{-g@var{level}} option to change the > debug level for DWARF. > > -@item -feliminate-unused-debug-symbols > +@item -fno-eliminate-unused-debug-symbols > @opindex feliminate-unused-debug-symbols > -Produce debugging information in stabs format (if that is supported), > -for only symbols that are actually used. > +@opindex fno-eliminate-unused-debug-symbols > +By default, no debug information is produced for symbols that are not > actually > +used. Use this option if you want debug information for all symbols. > > @item -femit-class-debug-always > @opindex femit-class-debug-always > -- > 2.21.0 >