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.