aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-profdata/llvm-profdata.cpp
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2024-10-29 22:10:33 -0700
committerGitHub <noreply@github.com>2024-10-29 22:10:33 -0700
commitbb3915149a7c9b1660db9caebfc96343352e8454 (patch)
treeeca424a18bb977aa60100b29924222172387678b /llvm/tools/llvm-profdata/llvm-profdata.cpp
parent9a7519fdb39f21a807189e1ed06826b43db929e1 (diff)
downloadllvm-bb3915149a7c9b1660db9caebfc96343352e8454.zip
llvm-bb3915149a7c9b1660db9caebfc96343352e8454.tar.gz
llvm-bb3915149a7c9b1660db9caebfc96343352e8454.tar.bz2
[MemProf] Support for random hotness when writing profile (#113998)
Add support for generating random hotness in the memprof profile writer, to be used for testing. The random seed is printed to stderr, and an additional option enables providing a specific seed in order to reproduce a particular random profile.
Diffstat (limited to 'llvm/tools/llvm-profdata/llvm-profdata.cpp')
-rw-r--r--llvm/tools/llvm-profdata/llvm-profdata.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp
index 59f0f1f..f7023aa 100644
--- a/llvm/tools/llvm-profdata/llvm-profdata.cpp
+++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp
@@ -342,6 +342,15 @@ cl::opt<bool> MemProfFullSchema(
"memprof-full-schema", cl::Hidden, cl::sub(MergeSubcommand),
cl::desc("Use the full schema for serialization"), cl::init(false));
+static cl::opt<bool>
+ MemprofGenerateRandomHotness("memprof-random-hotness", cl::init(false),
+ cl::Hidden, cl::sub(MergeSubcommand),
+ cl::desc("Generate random hotness values"));
+static cl::opt<unsigned> MemprofGenerateRandomHotnessSeed(
+ "memprof-random-hotness-seed", cl::init(0), cl::Hidden,
+ cl::sub(MergeSubcommand),
+ cl::desc("Random hotness seed to use (0 to generate new seed)"));
+
// Options specific to overlap subcommand.
cl::opt<std::string> BaseFilename(cl::Positional, cl::Required,
cl::desc("<base profile file>"),
@@ -641,7 +650,8 @@ struct WriterContext {
SmallSet<instrprof_error, 4> &WriterErrorCodes,
uint64_t ReservoirSize = 0, uint64_t MaxTraceLength = 0)
: Writer(IsSparse, ReservoirSize, MaxTraceLength, DoWritePrevVersion,
- MemProfVersionRequested, MemProfFullSchema),
+ MemProfVersionRequested, MemProfFullSchema,
+ MemprofGenerateRandomHotness, MemprofGenerateRandomHotnessSeed),
ErrLock(ErrLock), WriterErrorCodes(WriterErrorCodes) {}
};