[llvm] 456eb4b - [PseudoProbe] Only emit discriminstor in FS-AFDO mode.

Hongtao Yu via llvm-commits llvm-commits at lists.llvm.org
Tue May 16 21:35:36 PDT 2023


Author: Hongtao Yu
Date: 2023-05-16T21:35:17-07:00
New Revision: 456eb4b5bffe42d109c09b8706d4eeda8baa1f9a

URL: https://github.com/llvm/llvm-project/commit/456eb4b5bffe42d109c09b8706d4eeda8baa1f9a
DIFF: https://github.com/llvm/llvm-project/commit/456eb4b5bffe42d109c09b8706d4eeda8baa1f9a.diff

LOG: [PseudoProbe] Only emit discriminstor in FS-AFDO mode.

Despite previous effort {D148569} to avoid screwing up existing disrminator field, I'm still seeing some call probes getting a non-zero discriminator eventually in non-FS mode. It could be related to callsite merge. While they are investigated I'm disabling discriminator emission for non-FS mode. This avoids breaking the compatiblity with older tools like llvm-profgen and bolt.

Reviewed By: wenlei

Differential Revision: https://reviews.llvm.org/D150625

Added: 
    

Modified: 
    llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.cpp
index 7f7eef9f10e2..59c3fa15885e 100644
--- a/llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.cpp
@@ -45,9 +45,11 @@ void PseudoProbeHandler::emitPseudoProbe(uint64_t Guid, uint64_t Index,
   uint64_t Discriminator = 0;
   // For now only block probes have FS discriminators. See
   // MIRFSDiscriminator.cpp for more details.
-  if (DebugLoc &&
-      !DILocation::isPseudoProbeDiscriminator(DebugLoc->getDiscriminator()))
+  if (EnableFSDiscriminator && DebugLoc &&
+      (Type == (uint64_t)PseudoProbeType::Block))
     Discriminator = DebugLoc->getDiscriminator();
+  assert((EnableFSDiscriminator || Discriminator == 0) &&
+         "Discriminator should not be set in non-FSAFDO mode");
   SmallVector<InlineSite, 8> InlineStack(llvm::reverse(ReversedInlineStack));
   Asm->OutStreamer->emitPseudoProbe(Guid, Index, Type, Attr, Discriminator,
                                     InlineStack, Asm->CurrentFnSym);


        


More information about the llvm-commits mailing list