This is an extension of **profi** post-processing step that rebalances counts in CFGs that have basic blocks w/o probes (aka "unknown" blocks). Specifically, the new version finds many more "unknown" subgraphs and marks more "unknown" basic blocks as hot (which prevents unwanted optimization passes). I see up to 0.5% perf on some (large) binaries, e.g., clang-10 and gcc-8. The algorithm is still linear and yields no build time overhead.
27 lines
302 B
Plaintext
27 lines
302 B
Plaintext
foo1:37078302:0
|
|
1: 3300
|
|
2: 0
|
|
6: 3300
|
|
!CFGChecksum: 157181141624
|
|
|
|
foo2:37078302:0
|
|
1: 128
|
|
2: 128
|
|
3: 128
|
|
4: 128
|
|
!CFGChecksum: 208782362068
|
|
|
|
foo3:37078302:0
|
|
1: 500
|
|
2: 1500
|
|
4: 1200
|
|
6: 900
|
|
9: 500
|
|
!CFGChecksum: 189901498683
|
|
|
|
foo4:37078302:0
|
|
1: 400
|
|
3: 400
|
|
10: 400
|
|
!CFGChecksum: 241030178952
|