https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92924

--- Comment #27 from Martin Liška <marxin at gcc dot gnu.org> ---
I've just made an experiment with the dynamic allocation of TOPN profile counts
(similarly to what clang does).
There's a GCC branch that does instrumentation and profiling (including
merging):
https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;a=shortlog;h=refs/users/marxin/heads/gcov-topn-dynamic
-fprofile-use support is missing

I've also made an analysis script for that:
https://github.com/marxin/script-misc/blob/master/gcov-dump-dynamic.py

Using that I see the following stats for GCC PGO:

== Stats for /tmp/prev-gcc ==
stats for indirect_call:
Total: 9218, total freq: 5945116271, covered freq: 3610877419 (60.74%)
Histogram:
     0 tracked tuples:  6257 (67.88%), >=0.5:    0 (covered freq:            0
(0.00%))
     1 tracked tuples:  1786 (19.38%), >=0.5: 1786 (covered freq:   2260547505
(38.02%))
     2 tracked tuples:   219 (2.38%), >=0.5:  219 (covered freq:    529728820
(8.91%))
     3 tracked tuples:    79 (0.86%), >=0.5:   50 (covered freq:     64471724
(1.08%))
     4 tracked tuples:    79 (0.86%), >=0.5:   32 (covered freq:    109408820
(1.84%))
     5 tracked tuples:   104 (1.13%), >=0.5:   24 (covered freq:     41008121
(0.69%))
     6 tracked tuples:   239 (2.59%), >=0.5:   35 (covered freq:    109414082
(1.84%))
     7 tracked tuples:   135 (1.46%), >=0.5:    8 (covered freq:      4288912
(0.07%))
     8 tracked tuples:   224 (2.43%), >=0.5:   68 (covered freq:    192508962
(3.24%))
     9 tracked tuples:    62 (0.67%), >=0.5:   17 (covered freq:    180771320
(3.04%))
    10 tracked tuples:     2 (0.02%), >=0.5:    1 (covered freq:       128158
(0.00%))
    11 tracked tuples:     2 (0.02%), >=0.5:    1 (covered freq:      2440074
(0.04%))
    12 tracked tuples:     2 (0.02%), >=0.5:    2 (covered freq:       878475
(0.01%))
    13 tracked tuples:     4 (0.04%), >=0.5:    1 (covered freq:       815043
(0.01%))
    14 tracked tuples:     4 (0.04%), >=0.5:    2 (covered freq:      1086680
(0.02%))
    17 tracked tuples:     2 (0.02%), >=0.5:    0 (covered freq:            0
(0.00%))
    20 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    21 tracked tuples:     3 (0.03%), >=0.5:    0 (covered freq:            0
(0.00%))
    27 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    28 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    30 tracked tuples:     1 (0.01%), >=0.5:    1 (covered freq:    113225312
(1.90%))
    33 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    38 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    39 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    44 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    47 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    52 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    56 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
    91 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
   126 tracked tuples:     1 (0.01%), >=0.5:    1 (covered freq:       155411
(0.00%))
   177 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))
   204 tracked tuples:     1 (0.01%), >=0.5:    0 (covered freq:            0
(0.00%))

stats for topn:
Total: 1514, total freq: 1761900196, covered freq: 783364641 (44.46%)
Histogram:
     0 tracked tuples:  1030 (68.03%), >=0.5:    0 (covered freq:            0
(0.00%))
     1 tracked tuples:   151 (9.97%), >=0.5:  151 (covered freq:    362329033
(20.56%))
     2 tracked tuples:    45 (2.97%), >=0.5:   45 (covered freq:     28110609
(1.60%))
     3 tracked tuples:    37 (2.44%), >=0.5:   31 (covered freq:     50776835
(2.88%))
     4 tracked tuples:    21 (1.39%), >=0.5:   17 (covered freq:      6067434
(0.34%))
     5 tracked tuples:    38 (2.51%), >=0.5:   26 (covered freq:     57919679
(3.29%))
     6 tracked tuples:    12 (0.79%), >=0.5:   11 (covered freq:      2615169
(0.15%))
     7 tracked tuples:     9 (0.59%), >=0.5:    6 (covered freq:     13400400
(0.76%))
     8 tracked tuples:     5 (0.33%), >=0.5:    5 (covered freq:       352773
(0.02%))
     9 tracked tuples:     2 (0.13%), >=0.5:    1 (covered freq:       261382
(0.01%))
    10 tracked tuples:     5 (0.33%), >=0.5:    4 (covered freq:        47819
(0.00%))
    11 tracked tuples:     5 (0.33%), >=0.5:    3 (covered freq:      5742397
(0.33%))
    12 tracked tuples:     3 (0.20%), >=0.5:    2 (covered freq:       169186
(0.01%))
    13 tracked tuples:    11 (0.73%), >=0.5:    3 (covered freq:     64058047
(3.64%))
    14 tracked tuples:     2 (0.13%), >=0.5:    1 (covered freq:        16414
(0.00%))
    15 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    16 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:       105031
(0.01%))
    17 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    18 tracked tuples:     2 (0.13%), >=0.5:    1 (covered freq:        12980
(0.00%))
    20 tracked tuples:     2 (0.13%), >=0.5:    1 (covered freq:       208648
(0.01%))
    21 tracked tuples:     2 (0.13%), >=0.5:    0 (covered freq:            0
(0.00%))
    22 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:          617
(0.00%))
    24 tracked tuples:     3 (0.20%), >=0.5:    1 (covered freq:      1704983
(0.10%))
    25 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    26 tracked tuples:     2 (0.13%), >=0.5:    1 (covered freq:          827
(0.00%))
    27 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    28 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:        14077
(0.00%))
    29 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    31 tracked tuples:     3 (0.20%), >=0.5:    0 (covered freq:            0
(0.00%))
    32 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:      9180599
(0.52%))
    34 tracked tuples:     2 (0.13%), >=0.5:    1 (covered freq:     62118549
(3.53%))
    35 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    36 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    39 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:      6575908
(0.37%))
    40 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:        11111
(0.00%))
    41 tracked tuples:     3 (0.20%), >=0.5:    0 (covered freq:            0
(0.00%))
    50 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:       153304
(0.01%))
    52 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    57 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    58 tracked tuples:     2 (0.13%), >=0.5:    0 (covered freq:            0
(0.00%))
    60 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:      5587919
(0.32%))
    62 tracked tuples:     2 (0.13%), >=0.5:    0 (covered freq:            0
(0.00%))
    68 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    70 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    77 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    78 tracked tuples:     2 (0.13%), >=0.5:    2 (covered freq:       238209
(0.01%))
    81 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    83 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    95 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
    98 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   103 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   104 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   106 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   118 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:     11894052
(0.68%))
   124 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   140 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   142 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   143 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   153 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:        90323
(0.01%))
   191 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   203 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   208 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   212 tracked tuples:     1 (0.07%), >=0.5:    0 (covered freq:            0
(0.00%))
   237 tracked tuples:     1 (0.07%), >=0.5:    1 (covered freq:       441419
(0.03%))
   256 tracked tuples:    75 (4.95%), >=0.5:   15 (covered freq:     93158908
(5.29%))

Where >=0.5 (and covered freq) are targets that have probability >= 50% and so
that useful.

Reply via email to