mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-05 03:36:43 +00:00
[ARM, Asm] Use correct source location for register tokens
tryParseRegister advances the lexer, so we need to take copies of the start and end locations of the register operand before calling it. Previously, the caret in the diagnostic pointer to the comma after the r0 operand in the test, rather than the start of the operand. Differential revision: https://reviews.llvm.org/D31537 llvm-svn: 314799
This commit is contained in:
parent
487e504edd
commit
17b7236099
@ -3407,13 +3407,13 @@ int ARMAsmParser::tryParseShiftRegister(OperandVector &Operands) {
|
||||
/// parse for a specific register type.
|
||||
bool ARMAsmParser::tryParseRegisterWithWriteBack(OperandVector &Operands) {
|
||||
MCAsmParser &Parser = getParser();
|
||||
const AsmToken &RegTok = Parser.getTok();
|
||||
SMLoc RegStartLoc = Parser.getTok().getLoc();
|
||||
SMLoc RegEndLoc = Parser.getTok().getEndLoc();
|
||||
int RegNo = tryParseRegister();
|
||||
if (RegNo == -1)
|
||||
return true;
|
||||
|
||||
Operands.push_back(ARMOperand::CreateReg(RegNo, RegTok.getLoc(),
|
||||
RegTok.getEndLoc()));
|
||||
Operands.push_back(ARMOperand::CreateReg(RegNo, RegStartLoc, RegEndLoc));
|
||||
|
||||
const AsmToken &ExclaimTok = Parser.getTok();
|
||||
if (ExclaimTok.is(AsmToken::Exclaim)) {
|
||||
|
12
test/MC/ARM/register-token-source-loc.s
Normal file
12
test/MC/ARM/register-token-source-loc.s
Normal file
@ -0,0 +1,12 @@
|
||||
// RUN: not llvm-mc -triple armv6m--none-eabi < %s 2>&1 | FileCheck %s
|
||||
|
||||
// Some of these CHECK lines need to uses regexes to that the amount of
|
||||
// whitespace between the start of the line and the caret is significant.
|
||||
|
||||
add sp, r0, #4
|
||||
// CHECK: error: invalid instruction, any one of the following would fix this:
|
||||
// CHECK: note: instruction requires: thumb2
|
||||
// CHECK: note: invalid operand for instruction
|
||||
// CHECK-NEXT: {{^ add sp, r0, #4}}
|
||||
// CHECK-NEXT: {{^ \^}}
|
||||
// CHECK: note: too many operands for instruction
|
Loading…
x
Reference in New Issue
Block a user