mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
[mips] Report correct location when "erroring" about the use of $at when it's not available.
Summary: This removes the FIXMEs from test/MC/Mips/mips-noat.s. Reviewers: dsanders Reviewed By: dsanders Differential Revision: http://reviews.llvm.org/D4172 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211168 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f3a4a4bb56
commit
cacc062572
@ -203,7 +203,7 @@ class MipsAsmParser : public MCTargetAsmParser {
|
||||
|
||||
unsigned getGPR(int RegNo);
|
||||
|
||||
int getATReg();
|
||||
int getATReg(SMLoc Loc);
|
||||
|
||||
bool processInstruction(MCInst &Inst, SMLoc IDLoc,
|
||||
SmallVectorImpl<MCInst> &Instructions);
|
||||
@ -1149,9 +1149,15 @@ void MipsAsmParser::expandMemInst(MCInst &Inst, SMLoc IDLoc,
|
||||
// but for stores we must use $at.
|
||||
if (isLoad && (BaseRegNum != RegOpNum))
|
||||
TmpRegNum = RegOpNum;
|
||||
else
|
||||
TmpRegNum = getReg(
|
||||
(isGP64()) ? Mips::GPR64RegClassID : Mips::GPR32RegClassID, getATReg());
|
||||
else {
|
||||
int AT = getATReg(IDLoc);
|
||||
// At this point we need AT to perform the expansions and we exit if it is
|
||||
// not available.
|
||||
if (!AT)
|
||||
return;
|
||||
TmpRegNum =
|
||||
getReg((isGP64()) ? Mips::GPR64RegClassID : Mips::GPR32RegClassID, AT);
|
||||
}
|
||||
|
||||
TempInst.setOpcode(Mips::LUi);
|
||||
TempInst.addOperand(MCOperand::CreateReg(TmpRegNum));
|
||||
@ -1408,10 +1414,11 @@ bool MipsAssemblerOptions::setATReg(unsigned Reg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
int MipsAsmParser::getATReg() {
|
||||
int MipsAsmParser::getATReg(SMLoc Loc) {
|
||||
int AT = Options.getATRegNum();
|
||||
if (AT == 0)
|
||||
TokError("Pseudo instruction requires $at, which is not available");
|
||||
reportParseError(Loc,
|
||||
"Pseudo instruction requires $at, which is not available");
|
||||
return AT;
|
||||
}
|
||||
|
||||
|
@ -10,11 +10,10 @@
|
||||
test1:
|
||||
lw $2, 65536($2)
|
||||
|
||||
# FIXME: It would be better if the error pointed at the mnemonic instead of the newline
|
||||
# ERROR: mips-noat.s:[[@LINE+4]]:1: error: Pseudo instruction requires $at, which is not available
|
||||
test2:
|
||||
.set noat
|
||||
lw $2, 65536($2)
|
||||
lw $2, 65536($2) # ERROR: mips-noat.s:[[@LINE]]:9: error: Pseudo instruction requires $at, which is not available
|
||||
|
||||
|
||||
# Can we switch it back on successfully?
|
||||
# CHECK-LABEL: test3:
|
||||
@ -25,10 +24,6 @@ test3:
|
||||
.set at
|
||||
lw $2, 65536($2)
|
||||
|
||||
# FIXME: It would be better if the error pointed at the mnemonic instead of the newline
|
||||
# ERROR: mips-noat.s:[[@LINE+4]]:1: error: Pseudo instruction requires $at, which is not available
|
||||
test4:
|
||||
.set at=$0
|
||||
lw $2, 65536($2)
|
||||
|
||||
# ERROR-NOT: error
|
||||
lw $2, 65536($2) # ERROR: mips-noat.s:[[@LINE]]:9: error: Pseudo instruction requires $at, which is not available
|
||||
|
Loading…
Reference in New Issue
Block a user