aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-profdata/llvm-profdata.cpp
diff options
context:
space:
mode:
authorKazu Hirata <kazu@google.com>2024-04-24 16:25:35 -0700
committerGitHub <noreply@github.com>2024-04-24 16:25:35 -0700
commit4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970 (patch)
tree3384d9cefc7483edb02684c76014451f3d37c76c /llvm/tools/llvm-profdata/llvm-profdata.cpp
parenta10d67f9fb559d0c35a12b2d26974636bbf642c0 (diff)
downloadllvm-4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970.zip
llvm-4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970.tar.gz
llvm-4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970.tar.bz2
[memprof] Reduce schema for Version2 (#89876)
Curently, the compiler only uses several fields of MemoryInfoBlock. Serializing all fields into the indexed MemProf file simply wastes storage. This patch limits the schema down to four fields for Version2 by default. It retains the old behavior of serializing all fields via: llvm-profdata merge --memprof-version=2 --memprof-full-schema This patch reduces the size of the indexed MemProf profile I have by 40% (1.6GB down to 1.0GB).
Diffstat (limited to 'llvm/tools/llvm-profdata/llvm-profdata.cpp')
-rw-r--r--llvm/tools/llvm-profdata/llvm-profdata.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp
index 78daf9f..ec046eb 100644
--- a/llvm/tools/llvm-profdata/llvm-profdata.cpp
+++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp
@@ -308,6 +308,10 @@ cl::opt<memprof::IndexedVersion> MemProfVersionRequested(
clEnumValN(memprof::Version1, "1", "version 1"),
clEnumValN(memprof::Version2, "2", "version 2")));
+cl::opt<bool> MemProfFullSchema(
+ "memprof-full-schema", cl::Hidden, cl::sub(MergeSubcommand),
+ cl::desc("Use the full schema for serialization"), cl::init(false));
+
// Options specific to overlap subcommand.
cl::opt<std::string> BaseFilename(cl::Positional, cl::Required,
cl::desc("<base profile file>"),
@@ -600,7 +604,7 @@ struct WriterContext {
SmallSet<instrprof_error, 4> &WriterErrorCodes,
uint64_t ReservoirSize = 0, uint64_t MaxTraceLength = 0)
: Writer(IsSparse, ReservoirSize, MaxTraceLength, DoWritePrevVersion,
- MemProfVersionRequested),
+ MemProfVersionRequested, MemProfFullSchema),
ErrLock(ErrLock), WriterErrorCodes(WriterErrorCodes) {}
};