[PATCH] D148569: [PseudoProbe] Clean up dwarf discriminator and avoid duplicating factor.

Hongtao Yu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 9 09:23:44 PDT 2023


hoy added inline comments.


================
Comment at: llvm/include/llvm/IR/DebugInfoMetadata.h:2312-2313
+  // Do no interfere with pseudo probes.
+  if (isPseudoProbeDiscriminator(getDiscriminator()))
+    return this;
 
----------------
hoy wrote:
> wenlei wrote:
> > hoy wrote:
> > > wenlei wrote:
> > > > since you already guard this at call sites, is this still needed, or should it be an assert? 
> > > > 
> > > > line-based FS-AFDO doesn't use duplication factor either, where is the use of duplication factor prevented for that today?
> > > This is still needed as the guard on the callsite is to filter block probes. The logic here is mainly for callsite probes.
> > > 
> > > > line-based FS-AFDO doesn't use duplication factor either, where is the use of duplication factor prevented for that today?
> > > 
> > > The callsites of this function are disabled at For FS-AFDO, e.g, https://github.com/llvm/llvm-project/blob/5362a0d859d8e96b3f7c0437b7866e17a818a4f7/llvm/lib/Transforms/Utils/LoopUnroll.cpp#L516 .  The logic here is not only for FS-AFDO, but also for in general not screwing up callsite probe ids.
> > > 
> > > 
> > > 
> > > This is still needed as the guard on the callsite is to filter block probes. The logic here is mainly for callsite probes.
> > 
> > Where is the call site for call probes? Why this is guarded in the function for call probe, but at call site for block probe?
> > 
> > I saw three places where this clone is used, and two of the three you guarded them at call site. The remaining one is in VPlan.cpp. Is that inconsistency intentional?
> > 
> Block probe is in form of probe intrinsics, and the checks enforced in this change, i.,e, ` if (!I.isDebugOrPseudoInst())`, excludes probe intrinsics from getting duplicated factor updated.
> 
> Call probe is just attached to user call instruction in form of dwarf discriminator, and they are not excluded at the callsites of this function. We could do that, but I think it's more cleaner to do it here.
> 
> > I saw three places where this clone is used, and two of the three you guarded them at call site. The remaining one is in VPlan.cpp. Is that inconsistency intentional?
> 
> Good catch. Should also exclude probe intrinsic there for completeness, though it doesn't affect anything since FS-AFDO is already excluded there. 
Actually we have to exclude probe there, otherwise the duplication factor will be mistakenly encoded as a FS-discriminator.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148569/new/

https://reviews.llvm.org/D148569



More information about the llvm-commits mailing list