[llvm] [AsmPrint] Correctly factor function entry count when dumping MBB frequencies (PR #67826)
Snehasish Kumar via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 29 10:35:56 PDT 2023
================
@@ -1929,18 +1929,35 @@ void AsmPrinter::emitFunctionBody() {
// Output MBB ids, function names, and frequencies if the flag to dump
// MBB profile information has been set
- if (MBBProfileDumpFileOutput) {
+ if (MBBProfileDumpFileOutput && !MF->empty()) {
if (!MF->hasBBLabels())
MF->getContext().reportError(
SMLoc(),
"Unable to find BB labels for MBB profile dump. -mbb-profile-dump "
"must be called with -basic-block-sections=labels");
MachineBlockFrequencyInfo &MBFI =
getAnalysis<LazyMachineBlockFrequencyInfoPass>().getBFI();
+ // The entry count and the entry basic block frequency aren't the same. We
+ // want to capture "absolute" frequencies, i.e. the frequency with which a
+ // MBB is executed when the program is executed - from there, we can derive
+ // Function-relative frequencies (divide by the value for the first MBB),
+ // and we also have the information about frequency with which functions
+ // were called. This helps, for example, in a type of integration tests
+ // where we want to cross-validate the compiler's profile with a real
+ // profile.
+ // Using double precision because uint64 values used to encode mbb
----------------
snehasish wrote:
Double representations are slower to parse, particularly with standard library functions such as strtod, see https://github.com/fastfloat/fast_float.
> BTW, was a float until #66818
If you haven't had any concerns before then it probably doesn't matter now.
https://github.com/llvm/llvm-project/pull/67826
More information about the llvm-commits
mailing list