This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] debug: make -feliminate-unused-debug-symbols the default [PR debug/86964]
- From: Thomas De Schampheleire <patrickdepinguin at gmail dot com>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Thomas De Schampheleire <thomas dot de_schampheleire at nokia dot com>
- Date: Fri, 17 May 2019 12:07:16 +0200
- Subject: Re: [PATCH] debug: make -feliminate-unused-debug-symbols the default [PR debug/86964]
- References: <20190516092100.11157-1-patrickdepinguin@gmail.com> <CAFiYyc2BMR-F_4ieAm65a6KYZib2Uq+ytHZnby7RgEAojdOJ=w@mail.gmail.com> <CAAXf6LXHH219QwQB5LEr7AmTfZM-Vnh82T=WLATdaZBGzssTpg@mail.gmail.com> <CAFiYyc221tjuOPuaPBP7J2H3YQ8jZg6Y4356k7pznqiH1u_0jw@mail.gmail.com>
On Fri, May 17, 2019, 11:57 Richard Biener <richard.guenther@gmail.com>
wrote:
> On Fri, May 17, 2019 at 9:42 AM Thomas De Schampheleire
> <patrickdepinguin@gmail.com> wrote:
> >
> > Hi Richard,
> >
> > El jue., 16 may. 2019 a las 14:41, Richard Biener
> > (<richard.guenther@gmail.com>) escribió:
> > >
> > > On Thu, May 16, 2019 at 11:20 AM Thomas De Schampheleire
> > > <patrickdepinguin@gmail.com> wrote:
> > > >
> > > > From: Thomas De Schampheleire <thomas.de_schampheleire@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.
> >
> >
> > I tried reproducing these failures, using 'make bootstrap && make
> > check', but I see many many test failures:
> >
> > === gcc Summary ===
> >
> > # of expected passes 144268
> > # of unexpected failures 113
> > # of unexpected successes 28
> > # of expected failures 593
> > # of unresolved testcases 2
> > # of unsupported tests 2279
> >
> > === g++ Summary ===
> >
> > # of expected passes 134673
> > # of unexpected failures 137
> > # of expected failures 527
> > # of unsupported tests 5944
> >
> > /home/tdescham/repo/contrib/gcc/host-x86_64-pc-linux-gnu/gcc/xgcc
> > version 10.0.0 20190516 (experimental) (GCC)
> >
> >
> > Is it expected that 'master' (gcc 10) has such failures? Should I test
> > on another branch, if so which?
>
> The guality ones are probably the most "disturbing", but yes, there
> are quite a number of FAILs, my last result shows
>
> === gcc Summary ===
>
> # of expected passes 144773
> # of unexpected failures 102
> # of unexpected successes 28
> # of expected failures 602
> # of unresolved testcases 2
> # of unsupported tests 2297
>
> === g++ Summary ===
>
> # of expected passes 134956
> # of unexpected failures 1
> # of expected failures 527
> # of unsupported tests 5946
>
> so esp. the C suite has quite a lot (guality, that is...)
>
Do you have any idea how this simple change could cause all these problems?
I could imagine that tests checking specifically for debug symbols could
unexpectedly succeed or fail, but not how other tests could fail.
> > And is there a way to run only specific tests, e.g. the ones that you
> > pointed out?
>
> Yes, from inside gcc/ (in the build tree) do
>
> make check-g++ RUNTESTFLAGS="debug.exp=enum-2.C"
>
> to run a single testcase. Omit the '=enum-2.C' to run all tests
> where debug.exp resides. For the dwarf testcases use
> dwarf2.exp in place of debug.exp. For the C testcases
> use the check-gcc make target.
>
Thanks, I will try that.
Best regards
Thomas