Coverage makes use of frontend-based PGO instrumentation, which is much less efficient than the IR-based kind, primarily because it has no visibility into LLVM's inlining decisions. This results in instrumented basic blocks which contain multiple (redundant) counter increments. If we can find a way to map counters inserted by IR PGO to AST nodes, we could improve the situation.
It seems to be doable: FE needs to create and pass the mapping from regions to basic blocks to LLVM in some way so that the IR PGO can use the information to update the counter expressions associated with source regions.