From 655294866cf8fa719b240a7e9fe51de9a2c48ddc Mon Sep 17 00:00:00 2001 From: Teresa Johnson Date: Wed, 4 May 2022 11:52:47 -0700 Subject: [PATCH] [memprof] Use unknown_function error type for missing functions Switch the error type when a function is not found in the memprof profile to unknown_function. This gives compatibility with normal PGO function matching, and also prevents issuing large numbers of additional matching errors since pgo-warn-missing-function is off by default. Differential Revision: https://reviews.llvm.org/D124953 --- llvm/lib/ProfileData/InstrProfReader.cpp | 6 +++--- llvm/unittests/ProfileData/InstrProfTest.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp index 88de3385273c..ee8989979a26 100644 --- a/llvm/lib/ProfileData/InstrProfReader.cpp +++ b/llvm/lib/ProfileData/InstrProfReader.cpp @@ -1050,9 +1050,9 @@ IndexedInstrProfReader::getMemProfRecord(const uint64_t FuncNameHash) { "no memprof data available in profile"); auto Iter = MemProfRecordTable->find(FuncNameHash); if (Iter == MemProfRecordTable->end()) - return make_error(instrprof_error::hash_mismatch, - "memprof record not found for hash " + - Twine(FuncNameHash)); + return make_error( + instrprof_error::unknown_function, + "memprof record not found for function hash " + Twine(FuncNameHash)); // Setup a callback to convert from frame ids to frame using the on-disk // FrameData hash table. diff --git a/llvm/unittests/ProfileData/InstrProfTest.cpp b/llvm/unittests/ProfileData/InstrProfTest.cpp index e40bc82b8bf0..e097b374224e 100644 --- a/llvm/unittests/ProfileData/InstrProfTest.cpp +++ b/llvm/unittests/ProfileData/InstrProfTest.cpp @@ -352,8 +352,15 @@ TEST_F(InstrProfTest, test_memprof_getrecord_error) { auto Profile = Writer.writeBuffer(); readProfile(std::move(Profile)); + // Missing frames give a hash_mismatch error. auto RecordOr = Reader->getMemProfRecord(0x9999); - EXPECT_THAT_ERROR(RecordOr.takeError(), Failed()); + ASSERT_TRUE( + ErrorEquals(instrprof_error::hash_mismatch, RecordOr.takeError())); + + // Missing functions give a unknown_function error. + RecordOr = Reader->getMemProfRecord(0x1111); + ASSERT_TRUE( + ErrorEquals(instrprof_error::unknown_function, RecordOr.takeError())); } TEST_F(InstrProfTest, test_memprof_merge) {