mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 16:24:23 +00:00
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:
@ -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;
|
||||||
|
Reference in New Issue
Block a user