mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
ARM: fix assert on unpredictable POP instruction.
POP instructions are aliased to the ARM LDM variants but have different syntax. This caused two problems: we tried to access a non-existent operand to annotate the '!', and the error message didn't make much sense. With some vigorous hand-waving in the error message both problems can be fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193322 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1a03bec227
commit
cdd776d13f
@ -5466,9 +5466,8 @@ validateInstruction(MCInst &Inst,
|
||||
case ARM::t2STMIA_UPD:
|
||||
case ARM::t2STMDB_UPD: {
|
||||
if (listContainsReg(Inst, 3, Inst.getOperand(0).getReg()))
|
||||
return Error(Operands[4]->getStartLoc(),
|
||||
"writeback operator '!' not allowed when base register "
|
||||
"in register list");
|
||||
return Error(Operands.back()->getStartLoc(),
|
||||
"writeback register not allowed in register list");
|
||||
break;
|
||||
}
|
||||
case ARM::tMUL: {
|
||||
|
@ -433,6 +433,8 @@
|
||||
ldm r2!, {r2, r3}
|
||||
ldmdb r2!, {r2, r3}
|
||||
ldmda r2!, {r2, r3}
|
||||
@ CHECK-ERRORS: error: writeback operator '!' not allowed when base register in register list
|
||||
@ CHECK-ERRORS: error: writeback operator '!' not allowed when base register in register list
|
||||
@ CHECK-ERRORS: error: writeback operator '!' not allowed when base register in register list
|
||||
popeq {sp}
|
||||
@ CHECK-ERRORS: error: writeback register not allowed in register list
|
||||
@ CHECK-ERRORS: error: writeback register not allowed in register list
|
||||
@ CHECK-ERRORS: error: writeback register not allowed in register list
|
||||
@ CHECK-ERRORS: error: writeback register not allowed in register list
|
||||
|
@ -71,7 +71,7 @@ error: invalid operand for instruction
|
||||
@ CHECK-ERRORS-V8: error: writeback operator '!' not allowed when base register in register list
|
||||
@ CHECK-ERRORS-V8: ldm r2!, {r2, r3, r4, r10}
|
||||
@ CHECK-ERRORS-V8: ^
|
||||
@ CHECK-ERRORS-V8: error: writeback operator '!' not allowed when base register in register list
|
||||
@ CHECK-ERRORS-V8: error: writeback register not allowed in register list
|
||||
@ CHECK-ERRORS-V8: ldmdb r2!, {r2, r3, r4}
|
||||
@ CHECK-ERRORS-V8: ^
|
||||
|
||||
@ -100,7 +100,7 @@ error: invalid operand for instruction
|
||||
@ CHECK-ERRORS-V8: error: writeback operator '!' not allowed when base register in register list
|
||||
@ CHECK-ERRORS-V8: stm r2!, {r2, r9}
|
||||
@ CHECK-ERRORS-V8: ^
|
||||
@ CHECK-ERRORS-V8: error: writeback operator '!' not allowed when base register in register list
|
||||
@ CHECK-ERRORS-V8: error: writeback register not allowed in register list
|
||||
@ CHECK-ERRORS-V8: stmdb r2!, {r0, r2}
|
||||
@ CHECK-ERRORS-V8: ^
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user