mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 22:28:18 +00:00
[ms-inline asm] Avoid a false positive assertion
Assertion failed: (Start.isValid() == End.isValid() && "Start and end should either both be valid or both be invalid!") when parsing inline asm. SMLoc assumes that the first char * in the source is invalid. However, when parsing an inline asm the mnemonic is at this location. I don't want to change SMLoc, so use a trivial workaround. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162381 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1677,8 +1677,10 @@ MatchInstruction(SMLoc IDLoc,
|
|||||||
if ((Match1 == Match_MnemonicFail) && (Match2 == Match_MnemonicFail) &&
|
if ((Match1 == Match_MnemonicFail) && (Match2 == Match_MnemonicFail) &&
|
||||||
(Match3 == Match_MnemonicFail) && (Match4 == Match_MnemonicFail)) {
|
(Match3 == Match_MnemonicFail) && (Match4 == Match_MnemonicFail)) {
|
||||||
if (!WasOriginallyInvalidOperand) {
|
if (!WasOriginallyInvalidOperand) {
|
||||||
|
ArrayRef<SMRange> Ranges = matchingInlineAsm ? EmptyRanges :
|
||||||
|
Op->getLocRange();
|
||||||
return Error(IDLoc, "invalid instruction mnemonic '" + Base + "'",
|
return Error(IDLoc, "invalid instruction mnemonic '" + Base + "'",
|
||||||
Op->getLocRange(), matchingInlineAsm);
|
Ranges, matchingInlineAsm);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recover location info for the operand if we know which was the problem.
|
// Recover location info for the operand if we know which was the problem.
|
||||||
|
Reference in New Issue
Block a user