[llvm] [MemProf] Add basic summary section support (PR #141805)
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Wed May 28 11:47:08 PDT 2025
================
@@ -0,0 +1,70 @@
+//===- MemProfSummary.h - MemProf summary support ---------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains MemProf summary support and related interfaces.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_PROFILEDATA_MEMPROFSUMMARY_H
+#define LLVM_PROFILEDATA_MEMPROFSUMMARY_H
+
+#include "llvm/IR/ModuleSummaryIndex.h"
+#include "llvm/ProfileData/InstrProf.h"
+#include "llvm/ProfileData/MemProf.h"
+
+namespace llvm {
+namespace memprof {
+
+/// Return the allocation type for a given set of memory profile values.
+AllocationType getAllocType(uint64_t TotalLifetimeAccessDensity,
+ uint64_t AllocCount, uint64_t TotalLifetime);
+
+/// Helper to generate a single hash id for a given callstack, used for emitting
+/// matching statistics and useful for uniquing such statistics across modules.
+/// Also used to dedup contexts when computing the summary.
+uint64_t computeFullStackId(ArrayRef<Frame> CallStack);
+
+class MemProfSummary {
+private:
+ /// The number of summary fields below, which is used to enable some forwards
+ /// and backwards compatibility for the summary when serialized in the indexed
+ /// MemProf format. As long as no existing summary fields are removed or
+ /// reordered, and new summary fields are added after existing summary fields,
+ /// the MemProf indexed profile version does not need to be bumped to
+ /// accommodate new summary fields.
+ static const unsigned NumSummaryFields = 6;
+
+ const uint64_t NumContexts, NumColdContexts, NumHotContexts;
+ const uint64_t MaxColdTotalSize, MaxWarmTotalSize, MaxHotTotalSize;
+
+public:
+ MemProfSummary(uint64_t NumContexts, uint64_t NumColdContexts,
+ uint64_t NumHotContexts, uint64_t MaxColdTotalSize,
+ uint64_t MaxWarmTotalSize, uint64_t MaxHotTotalSize)
+ : NumContexts(NumContexts), NumColdContexts(NumColdContexts),
+ NumHotContexts(NumHotContexts), MaxColdTotalSize(MaxColdTotalSize),
+ MaxWarmTotalSize(MaxWarmTotalSize), MaxHotTotalSize(MaxHotTotalSize) {}
+
+ static unsigned getNumSummaryFields() { return NumSummaryFields; }
----------------
teresajohnson wrote:
done
https://github.com/llvm/llvm-project/pull/141805
More information about the llvm-commits
mailing list