================
@@ -36,6 +36,8 @@ class CodeGenPGO {
   unsigned NumRegionCounters;
   uint64_t FunctionHash;
   std::unique_ptr<llvm::DenseMap<const Stmt *, CounterPair>> RegionCounterMap;
+  std::unique_ptr<llvm::DenseMap<const Stmt *, unsigned>>
+      CallContinuationCounterMap;
----------------
ankurrj7 wrote:

 Thanks, I think I follow the point now.

  Let me think through this a bit more, but I agree the counter itself can 
probably live in
  RegionCounterMap. The continuation count is basically the executed count for 
the region that
  starts after the call returns, and there is not really a skipped side for 
that, so
  Skipped=None makes sense.

  My plan would be to try that shape: keep the same rules for deciding which 
calls get
  continuation counters, but store the assigned counter as a CounterPair in 
RegionCounterMap
  instead of carrying a separate counter map.

  The one detail I want to be careful about is that the current map is also 
acting as the
  .call continuation coverage is enabled? signal in a few coverage-mapping 
paths, especially
  where branch parent counts change after calls in conditions. If the counter 
map goes away, I
  think that should become an explicit bool rather than being inferred from the 
map.



https://github.com/llvm/llvm-project/pull/201079
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to