diff --git a/llvm/include/llvm/ProfileData/InstrProf.h b/llvm/include/llvm/ProfileData/InstrProf.h --- a/llvm/include/llvm/ProfileData/InstrProf.h +++ b/llvm/include/llvm/ProfileData/InstrProf.h @@ -293,7 +293,6 @@ missing_debug_info_for_correlation, unexpected_debug_info_for_correlation, unable_to_correlate_profile, - unsupported_debug_format, unknown_function, invalid_prof, hash_mismatch, diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp --- a/llvm/lib/ProfileData/InstrProf.cpp +++ b/llvm/lib/ProfileData/InstrProf.cpp @@ -119,9 +119,6 @@ case instrprof_error::unable_to_correlate_profile: OS << "unable to correlate profile"; break; - case instrprof_error::unsupported_debug_format: - OS << "unsupported debug info format (only DWARF is supported)"; - break; case instrprof_error::invalid_prof: OS << "invalid profile created. Please file a bug " "at: " BUG_REPORT_URL diff --git a/llvm/lib/ProfileData/InstrProfCorrelator.cpp b/llvm/lib/ProfileData/InstrProfCorrelator.cpp --- a/llvm/lib/ProfileData/InstrProfCorrelator.cpp +++ b/llvm/lib/ProfileData/InstrProfCorrelator.cpp @@ -23,7 +23,8 @@ if (SectionName.get() == INSTR_PROF_CNTS_SECT_NAME) return Section; return make_error( - instrprof_error::unable_to_correlate_profile); + instrprof_error::unable_to_correlate_profile, + "could not find counter section (" INSTR_PROF_CNTS_SECT_NAME ")"); } const char *InstrProfCorrelator::FunctionNameAttributeName = "Function Name"; @@ -54,9 +55,9 @@ // TODO: Enable profile correlation when there are multiple objects in a // dSYM bundle. if (DsymObjectsOrErr->size() > 1) - return createStringError( - std::error_code(), - "Profile correlation using multiple objects is not yet supported"); + return make_error( + instrprof_error::unable_to_correlate_profile, + "using multiple objects is not yet supported"); DebugInfoFilename = *DsymObjectsOrErr->begin(); } auto BufferOrErr = @@ -84,7 +85,7 @@ return InstrProfCorrelatorImpl::get(std::move(*CtxOrErr), *Obj); } return make_error( - instrprof_error::unable_to_correlate_profile); + instrprof_error::unable_to_correlate_profile, "not an object file"); } namespace llvm { @@ -120,13 +121,19 @@ return std::make_unique>(std::move(DICtx), std::move(Ctx)); } - return make_error(instrprof_error::unsupported_debug_format); + return make_error( + instrprof_error::unable_to_correlate_profile, + "unsupported debug info format (only DWARF is supported)"); } template Error InstrProfCorrelatorImpl::correlateProfileData() { assert(Data.empty() && Names.empty() && NamesVec.empty()); correlateProfileDataImpl(); + if (Data.empty() || NamesVec.empty()) + return make_error( + instrprof_error::unable_to_correlate_profile, + "could not find any profile metadata in debug info"); auto Result = collectPGOFuncNameStrings(NamesVec, /*doCompression=*/false, Names); CounterOffsets.clear();