[PATCH] D146452: [AutoFDO] Use flattened profiles for profile staleness metrics

Mingming Liu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 20 23:33:26 PDT 2023


mingmingl added inline comments.


================
Comment at: llvm/include/llvm/ProfileData/SampleProf.h:1310
 
+  static void flattenProfile(SampleProfileMap &ProfileMap) {
+    SampleProfileMap TmpProfiles;
----------------
nit: const SampleProfileMap


================
Comment at: llvm/include/llvm/ProfileData/SampleProf.h:1313
+    flattenProfile(TmpProfiles, ProfileMap);
+    ProfileMap = std::move(TmpProfiles);
+  }
----------------
nit: I'm wondering if it's simpler to pass 'ProfileMap' as opposed to use `std::move`


================
Comment at: llvm/lib/Transforms/IPO/SampleProfile.cpp:2076-2077
   if (ReportProfileStaleness || PersistProfileStaleness) {
+    if (!FlattenProfileForMatching.getNumOccurrences())
+      FlattenProfileForMatching = true;
+
----------------
for my information, is it intended that flattening is true if it's not set (num occurrences = 0)? ask since it seems to change existing behavior.


================
Comment at: llvm/lib/Transforms/IPO/SampleProfile.cpp:2091-2095
+  if (FunctionSamples::ProfileIsCS) {
+    for (const auto &I : Reader.getProfiles())
+      FlatProfiles[I.second.getName()].merge(I.second);
+  } else
+    ProfileConverter::flattenProfile(FlatProfiles, Reader.getProfiles());
----------------
If I read correctly, `FunctionSamples::ProfileIsCS` is a per-reader instance bool (correct me if I miss anything). So it might be useful to add tests for context-sensitive profile and non-CS profiles.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D146452



More information about the llvm-commits mailing list