On 11/11/19 3:19 PM, Richard Biener wrote:
On Mon, Nov 11, 2019 at 9:17 AM Martin Liška <mli...@suse.cz> wrote:

Hi.

The patch makes debug counter more usable. In particular, one can now
list multiple closed intervals and -fdbg-cnt-list can reflect that.
Based on the discussion with Richard, I decided to leave semi-closed
intervals and make it closed, it's more intuitive.

Example:
$ g++ -O2 tramp3d-v4.ii 
-fdbg-cnt=match:1-2:6-10:11-20,dce:100:105-200,merged_ipa_icf:300-300 -c 
-fdbg-cnt-list
...
    counter name                   closed intervals
-----------------------------------------------------------------
...
    dce                            [1, 100], [105, 200]
...
    match                          [1, 2], [6, 10], [11, 20]
    merged_ipa_icf                 [300, 300]

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Ready to be installed?

+  /* Reverse intervals exactly once.  */
+  if (v == 1)
+    limits[index]->reverse ();

why not do this at option processing time?

Because we don't have there any dbgcnt API. Right now one can use multiple
-fdbg-cnt options on a command line and that's why I'm doing that lazily.

I think sorted insertion
is reasonable here (I don't see you sorting them at all?).

I do expect a sorted intervals by user. If it's not provided, an error message
is directly emitted.


-static unsigned int limit_low[debug_counter_number_of_counters];
+static auto_vec<limit_tuple>
*limits[debug_counter_number_of_counters] = {NULL};

I think you can avoid one indirection here (vec<> is just one pointer) by doing

static vec<limit_tuple> limits[debug_counter_number_of_counters] = { vNULL };

?  Verify you get no runtime ctor, not sure if that's correct C++ for
initializing
all elements by vNULL, not just the first...

Alternatively I'd lazily allocate the whole vector rather than each individual
vector (at option processing time again), so

static vec<limit_tuple> (*limits)[];

I fully agree with that we should reduce one level of indirection.
Lemme take a look..

Thanks,
Martin


Thanks,
Richard.

Thanks,
Martin

gcc/ChangeLog:

2019-11-08  Martin Liska  <mli...@suse.cz>

         * common.opt: Document change of -fdbg-cnt option.
         * dbgcnt.c (DEBUG_COUNTER): Remove.
         (dbg_cnt_is_enabled): Remove.
         (dbg_cnt): Work with new intervals.
         (dbg_cnt_set_limit_by_index): Set to new
         list of intervals.
         (dbg_cnt_set_limit_by_name): Likewise.
         (dbg_cnt_process_single_pair): Process new format.
         (dbg_cnt_process_opt): Likewise.
         (dbg_cnt_list_all_counters): Likewise.
         * doc/invoke.texi: Document change of -fdbg-cnt option.

gcc/testsuite/ChangeLog:

2019-11-08  Martin Liska  <mli...@suse.cz>

         * gcc.dg/ipa/ipa-icf-39.c: Update -fdbg-cnt to the new format.
         * gcc.dg/pr68766.c: Likewise.
---
   gcc/common.opt                        |   2 +-
   gcc/dbgcnt.c                          | 157 +++++++++++++++-----------
   gcc/doc/invoke.texi                   |  15 ++-
   gcc/testsuite/gcc.dg/ipa/ipa-icf-39.c |   3 +-
   gcc/testsuite/gcc.dg/pr68766.c        |   1 -
   5 files changed, 103 insertions(+), 75 deletions(-)



Reply via email to