Skip to content

Commit

Permalink
[PseudoProbe] Only emit discriminstor in FS-AFDO mode.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
htyu committed May 17, 2023
1 parent b27f14d commit 456eb4b
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions llvm/lib/CodeGen/AsmPrinter/PseudoProbePrinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 456eb4b

Please sign in to comment.