On Fri, 2020-01-10 at 11:44 -0500, David Malcolm wrote:
> On Fri, 2020-01-10 at 08:35 -0700, Jeff Law wrote:
> > On Wed, 2020-01-08 at 17:07 -0500, David Malcolm wrote:
> > > (replying to my own "[PATCH 05/41] Add -fdiagnostics-nn-line-
> > > numbers"
> > > with a followup that does it at the DejaGnu level rather than as a
> > > test-only option)
> > > 
> > > On Wed, 2020-01-08 at 04:02 -0500, David Malcolm wrote:
> > > > I may be able to self-approve this.  It's used by the
> > > > diagnostic_path
> > > > patch, and by the analyzer test suite.  Perhaps better to make
> > > > undocumeted, or do it via a DejaGnu pruning directive, but I
> > > > wanted
> > > > to get v5 of the kit posted.
> > > > 
> > > > This patch implements -fdiagnostics-nn-line-numbers, a new option
> > > > which makes diagnostic_show_locus print "NN" rather than specific
> > > > line numbers when printing the left margin.
> > > > 
> > > > This is intended purely to make it easier to write certain kinds
> > > > of
> > > > DejaGnu test; various integration tests for diagnostic paths
> > > > later
> > > > in the patch kit make use of it.
> > > > 
> > > > gcc/ChangeLog:
> > > >         * common.opt (fdiagnostics-nn-line-numbers): New option.
> > > >         * diagnostic-show-locus.c
> > > > (layout::m_use_nn_for_line_numbers_p):
> > > >         New field.
> > > >         (layout::layout): Initialize it.
> > > >         (layout::calculate_linenum_width): Use it when computing
> > > >         m_linenum_width.
> > > >         (layout::print_source_line): Implement printing "NN" rather
> > > > than
> > > >         the line number.
> > > >         (selftest::test_line_numbers_multiline_range): Add a test of
> > > > "NN"
> > > >         printing.
> > > >         * diagnostic.c (diagnostic_initialize): Initialize
> > > >         use_nn_for_line_numbers_p.
> > > >         (num_digits): Add "use_nn_p" param.
> > > >         (selftest::test_num_digits): Add a test for use_nn_p==true.
> > > >         * diagnostic.h (diagnostic_context::use_nn_for_line_numbers_p):
> > > >         New field.
> > > >         (num_digits): Add optional "use_nn_p" param.
> > > >         * doc/invoke.texi (-fdiagnostics-nn-line-numbers): New option.
> > > >         * dwarf2out.c (gen_producer_string): Ignore
> > > >         OPT_fdiagnostics_nn_line_numbers.
> > > >         * lto-wrapper.c (merge_and_complain): Handle
> > > >         OPT_fdiagnostics_nn_line_numbers.
> > > >         (append_compiler_options): Likewise.
> > > >         (append_diag_options): Likewise.
> > > >         * opts.c (common_handle_option): Likewise.
> > > >         * toplev.c (general_init): Initialize
> > > >         global_dc->use_nn_for_line_numbers_p.
> > > 
> > > Here's an alterative patch to the above that replaces the
> > > "-fdiagnostics-nn-line-numbers" option in earlier versions of the
> > > analyzer patch kit, by doing it at the DejaGnu level instead.
> > > 
> > > This patch adds support for obscuring the line numbers printed in
> > > the
> > > left-hand margin when printing the source code, converting them to
> > > NN,
> > > e.g from:
> > > 
> > >   7111 |   if (!(flags & 0x0001)) {
> > >        |      ^
> > >        |      |
> > >        |      (1) following 'true' branch...
> > >   7112 |
> > > 
> > > to:
> > > 
> > >    NN  |   if (!(flags & 0x0001)) {
> > >        |      ^
> > >        |      |
> > >        |      (1) following 'true' branch...
> > >    NN  |
> > > 
> > > This is useful in followup patches e.g. when testing how
> > > interprocedural
> > > paths are printed using multiline.exp, to avoid depending on
> > > precise line
> > > numbers.
> > > 
> > > I'm testing this now (but it seems to be a working, drop-in
> > > replacement
> > > for the option in the parts of the patch kit I've tested with it).
> > > 
> > > Examples of use can be seen in the analyzer test suite:
> > >   https://gcc.gnu.org/ml/gcc-patches/2020-01/msg00320.html
> > > (search for -fdiagnostics-nn-line-numbers and dg-begin-multiline-
> > > output
> > > there to get the idea)
> > > 
> > > OK for trunk assuming the other testing looks good?
> > > 
> > > gcc/testsuite/ChangeLog:
> > >   * lib/gcc-dg.exp (cleanup-after-saved-dg-test): Reset global
> > >   nn_line_numbers_enabled.
> > >   * lib/nn-line-numbers.exp: New file.
> > >   * lib/prune.exp: Load nn-line-numbers.exp.
> > >   (prune_gcc_output): Call maybe-handle-nn-line-numbers.
> > OK
> > jeff
> 
> Thanks.  It turned out that the above patch didn't work; as noted in:
>   [PATCH] testsuite: add dg-enable-nn-line-numbers (v6)
>     https://gcc.gnu.org/ml/gcc-patches/2020-01/msg00517.html
> it turns out that the non-gcc parts of the testsuite that use prune.exp
> need to jump through some hoops due to Tcl lib path issues needing to
> preload libs by hacking in calls to load_gcc_lib, and at least one
> (libgo.exp) is a mirrored copy that we're not the canonical copy of.
> 
> Given that this is meant to be used in conjunction with multiline.exp
> the simplest fix was to move the code into multiline.exp, which I did
> in the latter patch.
> 
> Presumably that latter version is also OK?  (it has the advantage of
> actually successfully running...)
Yea, that's fine.
jeff
> 

Reply via email to