hoy added inline comments.

================
Comment at: llvm/lib/CodeGen/PseudoProbeInserter.cpp:50
+    for (MachineBasicBlock &MBB : MF) {
+      MachineInstr *FirstInstr = nullptr;
+      for (MachineInstr &MI : MBB) {
----------------
wmi wrote:
> What is the usage of FirstInstr?
Good patch. It's not used in this change. It's used in an upcoming change where 
a probe probing an empty block will be marked specially for better counts 
inference. 


================
Comment at: llvm/lib/CodeGen/PseudoProbeInserter.cpp:54
+          FirstInstr = &MI;
+        if (MI.isCall()) {
+          if (DILocation *DL = MI.getDebugLoc()) {
----------------
wmi wrote:
> Will tailcall or other optimizations convert call into something else before 
> PseudoProbeInserter pass?
Good point. A tailcall instruction (a special MIR jump instruction like 
`TAILJMPd`) is considered as  a call and can be identified as  `MI.isCall() && 
MI.isTerminator() && MI.isReturn()`. Tail calls are bad to the 
frame-pointer-based virtual unwinding since they may cause missing frames. An 
upcoming change will mark them specially and a tail call tracker in 
`llvm-profgen` will try to track the missing frames based on some static 
analyses.


================
Comment at: llvm/lib/Transforms/IPO/SampleProfileProbe.cpp:136-138
+  for (auto &I : CallProbeIds) {
+    auto Call = I.first;
+    uint32_t Index = I.second;
----------------
wmi wrote:
> for (auto &[Call, Index] : CallProbeIds) {
Thanks for the suggestion. This is a C++17 usage and may cause a warning with 
the current build setup which defaults to C++14  (due to -Wc++17)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D91756

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to