[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
This commit is contained in:
Teresa Johnson 2022-05-04 11:52:47 -07:00
parent 6123e9c0d0
commit 655294866c
2 changed files with 11 additions and 4 deletions

View File

@ -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<InstrProfError>(instrprof_error::hash_mismatch,
"memprof record not found for hash " +
Twine(FuncNameHash));
return make_error<InstrProfError>(
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.

View File

@ -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) {