diff options
author | Kazu Hirata <kazu@google.com> | 2024-11-20 14:03:27 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-20 14:03:27 -0800 |
commit | ec5b729e651c48dfff67487e6bb24c218c35cda9 (patch) | |
tree | 422293621993d49ad9dd15b498cb8a54769c9f8d /llvm/unittests/ProfileData/InstrProfTest.cpp | |
parent | 9be475af81ee36f1d360ad1d70b695c4b26c98fa (diff) | |
download | llvm-ec5b729e651c48dfff67487e6bb24c218c35cda9.zip llvm-ec5b729e651c48dfff67487e6bb24c218c35cda9.tar.gz llvm-ec5b729e651c48dfff67487e6bb24c218c35cda9.tar.bz2 |
[memprof] Upgrade a unit test to MemProf Version 3 (#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.
Diffstat (limited to 'llvm/unittests/ProfileData/InstrProfTest.cpp')
-rw-r--r-- | llvm/unittests/ProfileData/InstrProfTest.cpp | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/llvm/unittests/ProfileData/InstrProfTest.cpp b/llvm/unittests/ProfileData/InstrProfTest.cpp index 3beab89..8bd39fd 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())); } |