Index: include/llvm/ProfileData/SampleProf.h =================================================================== --- include/llvm/ProfileData/SampleProf.h +++ include/llvm/ProfileData/SampleProf.h @@ -46,15 +46,27 @@ return std::error_code(static_cast(E), sampleprof_category()); } -inline sampleprof_error MergeResult(sampleprof_error &Accumulator, - sampleprof_error Result) { - // Prefer first error encountered as later errors may be secondary effects of - // the initial problem. - if (Accumulator == sampleprof_error::success && - Result != sampleprof_error::success) - Accumulator = Result; - return Accumulator; -} +class SampleProfError : public ErrorInfo { +public: + SampleProfError(sampleprof_error Err) : Err(Err) { + assert(Err != sampleprof_error::success && "Not an error"); + } + + std::string message() const override; + + void log(raw_ostream &OS) const override { OS << message(); } + + std::error_code convertToErrorCode() const override { + return make_error_code(Err); + } + + sampleprof_error get() const { return Err; } + + static char ID; + +private: + sampleprof_error Err; +}; } // end namespace llvm