From b277b8504d157bb37dc73075cf49709fd1b39d3a Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 22 Nov 2024 22:14:23 -0800 Subject: [PATCH] [memprof] Add an assert to InstrProfWriter::addMemProfData This patch adds a quick validity check to InstrProfWriter::addMemProfData. Specifically, we check to see if we have all (or none) of the MemProf profile components (frames, call stacks, records). The credit goes to Teresa Johnson for suggesting this assert. --- llvm/lib/ProfileData/InstrProfWriter.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/llvm/lib/ProfileData/InstrProfWriter.cpp b/llvm/lib/ProfileData/InstrProfWriter.cpp index 725ff9256fd4a0..4470e2c58105c2 100644 --- a/llvm/lib/ProfileData/InstrProfWriter.cpp +++ b/llvm/lib/ProfileData/InstrProfWriter.cpp @@ -351,9 +351,14 @@ bool InstrProfWriter::addMemProfCallStack( bool InstrProfWriter::addMemProfData(memprof::IndexedMemProfData Incoming, function_ref Warn) { - // TODO: Once we remove support for MemProf format Version V1, assert that - // the three components (frames, call stacks, and records) are either all - // empty or populated. + // Return immediately if everything is empty. + if (Incoming.Frames.empty() && Incoming.CallStacks.empty() && + Incoming.Records.empty()) + return true; + + // Otherwise, every component must be non-empty. + assert(!Incoming.Frames.empty() && !Incoming.CallStacks.empty() && + !Incoming.Records.empty()); if (MemProfData.Frames.empty()) MemProfData.Frames = std::move(Incoming.Frames);