[llvm] [memprof] Compare Frames instead of FrameIds in a unit test (PR #119111)
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Sat Dec 7 20:28:57 PST 2024
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/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.
>From a15a794c43a381877dc5e0925e9d485fab48cbbc Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sat, 7 Dec 2024 11:08:05 -0800
Subject: [PATCH] [memprof] Compare Frames instead of FrameIds in a unit test
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.
---
llvm/unittests/ProfileData/MemProfTest.cpp | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
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