From: Alex Lorenz Date: Tue, 30 Jun 2015 17:55:00 +0000 (+0000) Subject: MIR Parser: refactor error reporting for machine instruction parser errors. NFC. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=403c3312c3f87e8ef33e667c8029dbaa45ccf65c;p=oota-llvm.git MIR Parser: refactor error reporting for machine instruction parser errors. NFC. This commit extracts the code that reports an error that's produced by the machine instruction parser into a new method that can be reused in other places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241086 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/MIRParser/MIRParser.cpp b/lib/CodeGen/MIRParser/MIRParser.cpp index f10a9e7cf45..064b2f15d65 100644 --- a/lib/CodeGen/MIRParser/MIRParser.cpp +++ b/lib/CodeGen/MIRParser/MIRParser.cpp @@ -60,6 +60,12 @@ public: /// Always returns true. bool error(const Twine &Message); + /// Report a given error with the location translated from the location in an + /// embedded string literal to a location in the MIR file. + /// + /// Always returns true. + bool error(const SMDiagnostic &Error, SMRange SourceRange); + /// Try to parse the optional LLVM module and the machine functions in the MIR /// file. /// @@ -119,6 +125,12 @@ bool MIRParserImpl::error(const Twine &Message) { return true; } +bool MIRParserImpl::error(const SMDiagnostic &Error, SMRange SourceRange) { + assert(Error.getKind() == SourceMgr::DK_Error && "Expected an error"); + reportDiagnostic(diagFromMIStringDiag(Error, SourceRange)); + return true; +} + void MIRParserImpl::reportDiagnostic(const SMDiagnostic &Diag) { DiagnosticSeverity Kind; switch (Diag.getKind()) { @@ -266,11 +278,8 @@ bool MIRParserImpl::initializeMachineBasicBlock( for (const auto &MISource : YamlMBB.Instructions) { SMDiagnostic Error; MachineInstr *MI = nullptr; - if (parseMachineInstr(MI, SM, MF, MISource.Value, MBBSlots, IRSlots, - Error)) { - reportDiagnostic(diagFromMIStringDiag(Error, MISource.SourceRange)); - return true; - } + if (parseMachineInstr(MI, SM, MF, MISource.Value, MBBSlots, IRSlots, Error)) + return error(Error, MISource.SourceRange); MBB.insert(MBB.end(), MI); } return false;