diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp --- a/llvm/lib/ProfileData/InstrProfReader.cpp +++ b/llvm/lib/ProfileData/InstrProfReader.cpp @@ -1050,9 +1050,9 @@ "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 --- a/llvm/unittests/ProfileData/InstrProfTest.cpp +++ b/llvm/unittests/ProfileData/InstrProfTest.cpp @@ -352,8 +352,15 @@ 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) {