https://github.com/snehasish updated https://github.com/llvm/llvm-project/pull/140505
>From 305e2bdbab27828633afb3d1e2698002f7ccadda Mon Sep 17 00:00:00 2001 From: Snehasish Kumar <snehasi...@google.com> Date: Mon, 19 May 2025 00:03:59 -0700 Subject: [PATCH] [NFC][MemProf] Move types shared between Analysis, ProfileData and ModuleSummary (Core) to a separate header --- .../include/llvm/Analysis/MemoryProfileInfo.h | 3 +- llvm/include/llvm/IR/ModuleSummaryIndex.h | 22 +--------- llvm/include/llvm/ProfileData/MemProfCommon.h | 43 +++++++++++++++++++ llvm/lib/ProfileData/CMakeLists.txt | 1 - .../Instrumentation/MemProfiler.cpp | 1 + 5 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 llvm/include/llvm/ProfileData/MemProfCommon.h diff --git a/llvm/include/llvm/Analysis/MemoryProfileInfo.h b/llvm/include/llvm/Analysis/MemoryProfileInfo.h index 1d98f86f50484..9fcb81a0a1b4c 100644 --- a/llvm/include/llvm/Analysis/MemoryProfileInfo.h +++ b/llvm/include/llvm/Analysis/MemoryProfileInfo.h @@ -13,8 +13,9 @@ #ifndef LLVM_ANALYSIS_MEMORYPROFILEINFO_H #define LLVM_ANALYSIS_MEMORYPROFILEINFO_H +#include "llvm/IR/InstrTypes.h" #include "llvm/IR/Metadata.h" -#include "llvm/IR/ModuleSummaryIndex.h" +#include "llvm/ProfileData/MemProfCommon.h" #include <map> namespace llvm { diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index 65e428a3adea7..23f9504b44fab 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndex.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h @@ -27,6 +27,7 @@ #include "llvm/IR/ConstantRange.h" #include "llvm/IR/GlobalValue.h" #include "llvm/IR/Module.h" +#include "llvm/ProfileData/MemProfCommon.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/InterleavedRange.h" @@ -306,14 +307,6 @@ template <> struct DenseMapInfo<ValueInfo> { static unsigned getHashValue(ValueInfo I) { return hash_value(I.getRef()); } }; -// For optional hinted size reporting, holds a pair of the full stack id -// (pre-trimming, from the full context in the profile), and the associated -// total profiled size. -struct ContextTotalSize { - uint64_t FullStackId; - uint64_t TotalSize; -}; - /// Summary of memprof callsite metadata. struct CallsiteInfo { // Actual callee function. @@ -350,19 +343,6 @@ inline raw_ostream &operator<<(raw_ostream &OS, const CallsiteInfo &SNI) { return OS; } -// Allocation type assigned to an allocation reached by a given context. -// More can be added, now this is cold, notcold and hot. -// Values should be powers of two so that they can be ORed, in particular to -// track allocations that have different behavior with different calling -// contexts. -enum class AllocationType : uint8_t { - None = 0, - NotCold = 1, - Cold = 2, - Hot = 4, - All = 7 // This should always be set to the OR of all values. -}; - /// Summary of a single MIB in a memprof metadata on allocations. struct MIBInfo { // The allocation type for this profiled context. diff --git a/llvm/include/llvm/ProfileData/MemProfCommon.h b/llvm/include/llvm/ProfileData/MemProfCommon.h new file mode 100644 index 0000000000000..a638824ec000e --- /dev/null +++ b/llvm/include/llvm/ProfileData/MemProfCommon.h @@ -0,0 +1,43 @@ +//===- MemProfCommon.h - MemProf 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 common types used by different parts of the MemProf code. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_PROFILEDATA_MEMPROFCOMMON_H +#define LLVM_PROFILEDATA_MEMPROFCOMMON_H + +#include <cstdint> + +namespace llvm { + +// For optional hinted size reporting, holds a pair of the full stack id +// (pre-trimming, from the full context in the profile), and the associated +// total profiled size. +struct ContextTotalSize { + uint64_t FullStackId; + uint64_t TotalSize; +}; + +// Allocation type assigned to an allocation reached by a given context. +// More can be added, now this is cold, notcold and hot. +// Values should be powers of two so that they can be ORed, in particular to +// track allocations that have different behavior with different calling +// contexts. +enum class AllocationType : uint8_t { + None = 0, + NotCold = 1, + Cold = 2, + Hot = 4, + All = 7 // This should always be set to the OR of all values. +}; + +} // namespace llvm + +#endif // LLVM_PROFILEDATA_MEMPROFCOMMON_H diff --git a/llvm/lib/ProfileData/CMakeLists.txt b/llvm/lib/ProfileData/CMakeLists.txt index ca9ea3205ee1d..de60a655d5bd5 100644 --- a/llvm/lib/ProfileData/CMakeLists.txt +++ b/llvm/lib/ProfileData/CMakeLists.txt @@ -26,7 +26,6 @@ add_llvm_component_library(LLVMProfileData LINK_COMPONENTS BitstreamReader - Core Object Support Demangle diff --git a/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp b/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp index 5982476f3994e..6538311571529 100644 --- a/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemProfiler.cpp @@ -46,6 +46,7 @@ #include "llvm/Transforms/Utils/ModuleUtils.h" #include <map> #include <set> +#include <unordered_set> using namespace llvm; using namespace llvm::memprof; _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits