[llvm] 6c062af - [memprof] Compare Frames instead of FrameIds in a unit test (#119111)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 8 08:33:09 PST 2024
Author: Kazu Hirata
Date: 2024-12-08T08:33:05-08:00
New Revision: 6c062afc2e6ed4329e1e14cb011913195a5356fa
URL: https://github.com/llvm/llvm-project/commit/6c062afc2e6ed4329e1e14cb011913195a5356fa
DIFF: https://github.com/llvm/llvm-project/commit/6c062afc2e6ed4329e1e14cb011913195a5356fa.diff
LOG: [memprof] Compare Frames instead of FrameIds in a unit test (#119111)
When we call IndexedMemProfRecord::toMemProfRecord, we care about
getting the original (that is, non-indexed) MemProfRecord back, so we
should just verify that, not the hash values, which are
intermediaries.
There is a remote possibility of hash collisions where call stack
{F1, F2} might come back as {F1, F1} if F1.hash() == F2.hash() for
example. However, since FrameId uses BLAKE, the hash values should be
consistent across architectures. That is, if this test case works on
one architecture, it should work on others as well.
Added:
Modified:
llvm/unittests/ProfileData/MemProfTest.cpp
Removed:
################################################################################
diff --git a/llvm/unittests/ProfileData/MemProfTest.cpp b/llvm/unittests/ProfileData/MemProfTest.cpp
index 5e24579baccd37..55feb1c3f60b45 100644
--- a/llvm/unittests/ProfileData/MemProfTest.cpp
+++ b/llvm/unittests/ProfileData/MemProfTest.cpp
@@ -534,19 +534,10 @@ TEST(MemProf, IndexedMemProfRecordToMemProfRecord) {
// Verify the contents of Record.
ASSERT_THAT(Record.AllocSites, SizeIs(2));
- ASSERT_THAT(Record.AllocSites[0].CallStack, SizeIs(2));
- EXPECT_EQ(Record.AllocSites[0].CallStack[0].hash(), F1.hash());
- EXPECT_EQ(Record.AllocSites[0].CallStack[1].hash(), F2.hash());
- ASSERT_THAT(Record.AllocSites[1].CallStack, SizeIs(2));
- EXPECT_EQ(Record.AllocSites[1].CallStack[0].hash(), F1.hash());
- EXPECT_EQ(Record.AllocSites[1].CallStack[1].hash(), F3.hash());
- ASSERT_THAT(Record.CallSites, SizeIs(2));
- ASSERT_THAT(Record.CallSites[0], SizeIs(2));
- EXPECT_EQ(Record.CallSites[0][0].hash(), F2.hash());
- EXPECT_EQ(Record.CallSites[0][1].hash(), F3.hash());
- ASSERT_THAT(Record.CallSites[1], SizeIs(2));
- EXPECT_EQ(Record.CallSites[1][0].hash(), F2.hash());
- EXPECT_EQ(Record.CallSites[1][1].hash(), F4.hash());
+ EXPECT_THAT(Record.AllocSites[0].CallStack, ElementsAre(F1, F2));
+ EXPECT_THAT(Record.AllocSites[1].CallStack, ElementsAre(F1, F3));
+ EXPECT_THAT(Record.CallSites,
+ ElementsAre(ElementsAre(F2, F3), ElementsAre(F2, F4)));
}
// Populate those fields returned by getHotColdSchema.
More information about the llvm-commits
mailing list