From 8558f80b4077536d6aa46b97328d6df1210e261f Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Thu, 13 Aug 2026 13:18:05 +0800 Subject: [Support] Centralize error context handling --- backend/lib/CodeGen/MachinePassManager.cpp | 41 +++++++++++++----------------- 1 file changed, 18 insertions(+), 23 deletions(-) (limited to 'backend/lib/CodeGen/MachinePassManager.cpp') diff --git a/backend/lib/CodeGen/MachinePassManager.cpp b/backend/lib/CodeGen/MachinePassManager.cpp index 0810965..2cd81b9 100644 --- a/backend/lib/CodeGen/MachinePassManager.cpp +++ b/backend/lib/CodeGen/MachinePassManager.cpp @@ -44,11 +44,6 @@ using Clock = std::chrono::steady_clock; return static_cast(Elapsed.count()); } -[[nodiscard]] Error prefixedError(const Error &Source, std::string Prefix) { - Prefix.append(Source.message()); - return Error(Source.code(), std::move(Prefix)); -} - [[nodiscard]] bool hasDuplicateAnalysisIDs(std::span IDs) { std::unordered_set Unique; for (const AnalysisID ID : IDs) { @@ -786,8 +781,8 @@ PassManagerCallbacksfailure(Name, Function, Failure); Analyses.setInstrumentation(nullptr); @@ -799,8 +794,8 @@ PassManagerCallbacksfailure(Name, Function, Failure); Analyses.setInstrumentation(nullptr); @@ -819,7 +814,7 @@ PassManagerCallbacksfailure(Name, Function, Failure, Duration); Analyses.clear(Function); @@ -869,8 +864,8 @@ PassManagerCallbacksfailure(Name, Function, Failure, Duration); Analyses.clear(Function); @@ -884,8 +879,8 @@ PassManagerCallbacksfailure(Name, Function, Failure, Duration); Analyses.clear(Function); @@ -972,7 +967,7 @@ PassManagerCallbacksreplayBufferedEvents(EventBuffers[Index]); const auto &Failure = Failures[Index]; if (Failure) { - return std::unexpected(prefixedError( + return std::unexpected(withErrorContext( *Failure, "function '" + std::string(Unit.functionAt(Index)->name()) + "' failed: ")); } } @@ -1012,8 +1007,8 @@ PassManagerCallbacksunitFailure(Name, Unit, Failure); UnitAnalyses.setInstrumentation(nullptr); @@ -1026,8 +1021,8 @@ PassManagerCallbacksunitFailure(Name, Unit, Failure); UnitAnalyses.setInstrumentation(nullptr); @@ -1042,8 +1037,8 @@ PassManagerCallbacksrun(Unit, Target, UnitAnalyses, FunctionAnalyses); const std::uint64_t Duration = elapsedNanoseconds(Start); if (!Result) { - Error Failure = prefixedError(Result.error(), - "compilation-unit pass '" + std::string(Name) + "' failed: "); + Error Failure = withErrorContext(Result.error(), "compilation-unit pass '" + + std::string(Name) + "' failed: "); if (Instrumentation != nullptr) Instrumentation->unitFailure(Name, Unit, Failure, Duration); UnitAnalyses.clearAll(); @@ -1077,8 +1072,8 @@ PassManagerCallbacksunitFailure(Name, Unit, Failure, Duration); UnitAnalyses.clearAll(); -- cgit v1.2.3