This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] debug: make -feliminate-unused-debug-symbols the default [PR debug/86964]


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]