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
This commit is contained in:
Alex Lorenz
2015-06-30 17:55:00 +00:00
parent 939f023bf9
commit 403c3312c3

View File

@ -60,6 +60,12 @@ public:
/// Always returns true. /// Always returns true.
bool error(const Twine &Message); 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 /// Try to parse the optional LLVM module and the machine functions in the MIR
/// file. /// file.
/// ///
@ -119,6 +125,12 @@ bool MIRParserImpl::error(const Twine &Message) {
return true; 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) { void MIRParserImpl::reportDiagnostic(const SMDiagnostic &Diag) {
DiagnosticSeverity Kind; DiagnosticSeverity Kind;
switch (Diag.getKind()) { switch (Diag.getKind()) {
@ -266,11 +278,8 @@ bool MIRParserImpl::initializeMachineBasicBlock(
for (const auto &MISource : YamlMBB.Instructions) { for (const auto &MISource : YamlMBB.Instructions) {
SMDiagnostic Error; SMDiagnostic Error;
MachineInstr *MI = nullptr; MachineInstr *MI = nullptr;
if (parseMachineInstr(MI, SM, MF, MISource.Value, MBBSlots, IRSlots, if (parseMachineInstr(MI, SM, MF, MISource.Value, MBBSlots, IRSlots, Error))
Error)) { return error(Error, MISource.SourceRange);
reportDiagnostic(diagFromMIStringDiag(Error, MISource.SourceRange));
return true;
}
MBB.insert(MBB.end(), MI); MBB.insert(MBB.end(), MI);
} }
return false; return false;