[llvm] r211168 - [mips] Report correct location when "erroring" about the use of $at when it's not available.
Matheus Almeida
matheus.almeida at imgtec.com
Wed Jun 18 07:46:05 PDT 2014
Author: matheusalmeida
Date: Wed Jun 18 09:46:05 2014
New Revision: 211168
URL: http://llvm.org/viewvc/llvm-project?rev=211168&view=rev
Log:
[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
Modified:
llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/trunk/test/MC/Mips/mips-noat.s
Modified: llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp?rev=211168&r1=211167&r2=211168&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Wed Jun 18 09:46:05 2014
@@ -203,7 +203,7 @@ class MipsAsmParser : public MCTargetAsm
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
// 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(unsi
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;
}
Modified: llvm/trunk/test/MC/Mips/mips-noat.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips-noat.s?rev=211168&r1=211167&r2=211168&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/mips-noat.s (original)
+++ llvm/trunk/test/MC/Mips/mips-noat.s Wed Jun 18 09:46:05 2014
@@ -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
More information about the llvm-commits
mailing list