[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