[llvm] [memprof] Upgrade a unit test to MemProf Version 3 (PR #117063)
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 20 13:40:16 PST 2024
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/117063
This patch upgrades a unit test to MemProf Version 3 while removing
those bits that cannot be upgraded to Version 3.
The bits being removed expect instrprof_error::hash_mismatch from a
broken MemProf profile that references a frame that doesn't actually
exist. Now, Version 3 no longer issues
instrprof_error::hash_mismatch. Even if it still issued
instrprof_error::hash_mismatch, we would have a couple of hurdles:
- InstrProfWriter::addMemProfData will soon require all (or none) of
the fields (frames, call stacks, and records) be populated. That
is, it won't accept an instance of IndexedMemProfData with frames
missing.
- writeMemProfV3 asserts that every frame occurs at least once:
assert(MemProfData.Frames.size() == FrameHistogram.size());
This patch gives up on instrprof_error::hash_mismatch and tries to
trigger instrprof_error::unknown_function with the empty profile.
>From c2c36c96c5e379a0a3c0a9865f864af1a0eab71a Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Wed, 20 Nov 2024 11:15:53 -0800
Subject: [PATCH] [memprof] Upgrade a unit test to MemProf Version 3
This patch upgrades a unit test to MemProf Version 3 while removing
those bits that cannot be upgraded to Version 3.
The bits being removed expect instrprof_error::hash_mismatch from a
broken MemProf profile that references a frame that doesn't actually
exist. Now, Version 3 no longer issues
instrprof_error::hash_mismatch. Even if it still issued
instrprof_error::hash_mismatch, we would have a couple of hurdles:
- InstrProfWriter::addMemProfData will soon require all (or none) of
the fields (frames, call stacks, and records) be populated. That
is, it won't accept an instance of IndexedMemProfData with frames
missing.
- writeMemProfV3 asserts that every frame occurs at least once:
assert(MemProfData.Frames.size() == FrameHistogram.size());
This patch gives up on instrprof_error::hash_mismatch and tries to
trigger instrprof_error::unknown_function with the empty profile.
---
llvm/unittests/ProfileData/InstrProfTest.cpp | 22 +++-----------------
1 file changed, 3 insertions(+), 19 deletions(-)
diff --git a/llvm/unittests/ProfileData/InstrProfTest.cpp b/llvm/unittests/ProfileData/InstrProfTest.cpp
index 3beab8976304ef..8bd39fd71266af 100644
--- a/llvm/unittests/ProfileData/InstrProfTest.cpp
+++ b/llvm/unittests/ProfileData/InstrProfTest.cpp
@@ -640,29 +640,13 @@ TEST_F(InstrProfTest, test_memprof_getrecord_error) {
ASSERT_THAT_ERROR(Writer.mergeProfileKind(InstrProfKind::MemProf),
Succeeded());
- const IndexedMemProfRecord IndexedMR = makeRecord(
- /*AllocFrames=*/
- {
- {0, 1},
- {2, 3},
- },
- /*CallSiteFrames=*/{
- {4, 5},
- });
- // We skip adding the frame mappings here unlike the test_memprof unit test
- // above to exercise the failure path when getMemProfRecord is invoked.
- Writer.addMemProfRecord(/*Id=*/0x9999, IndexedMR);
-
+ Writer.setMemProfVersionRequested(memprof::Version3);
+ // Generate an empty profile.
auto Profile = Writer.writeBuffer();
readProfile(std::move(Profile));
- // Missing frames give a hash_mismatch error.
- auto RecordOr = Reader->getMemProfRecord(0x9999);
- ASSERT_TRUE(
- ErrorEquals(instrprof_error::hash_mismatch, RecordOr.takeError()));
-
// Missing functions give a unknown_function error.
- RecordOr = Reader->getMemProfRecord(0x1111);
+ auto RecordOr = Reader->getMemProfRecord(0x1111);
ASSERT_TRUE(
ErrorEquals(instrprof_error::unknown_function, RecordOr.takeError()));
}
More information about the llvm-commits
mailing list