From: Daniel Sanders Date: Mon, 24 Mar 2014 16:48:01 +0000 (+0000) Subject: [mips] Add error message when trying to use $at in '.set noat' mode. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=8ce101ed106b8da645eba8b98ee736cd19cd3543;p=oota-llvm.git [mips] Add error message when trying to use $at in '.set noat' mode. Summary: Patch by David Chisnall His work was sponsored by: DARPA, AFRL Differential Revision: http://llvm-reviews.chandlerc.com/D3158 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204621 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp index 8c0c181feca..f54a62b666c 100644 --- a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp +++ b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -1174,7 +1174,12 @@ bool MipsAssemblerOptions::setATReg(unsigned Reg) { return true; } -int MipsAsmParser::getATReg() { return Options.getATRegNum(); } +int MipsAsmParser::getATReg() { + int AT = Options.getATRegNum(); + if (AT == 0) + TokError("Pseudo instruction requires $at, which is not available"); + return AT; +} unsigned MipsAsmParser::getReg(int RC, int RegNo) { return *(getContext().getRegisterInfo()->getRegClass(RC).begin() + RegNo); diff --git a/test/MC/Mips/mips-noat.s b/test/MC/Mips/mips-noat.s new file mode 100644 index 00000000000..152a1ee4067 --- /dev/null +++ b/test/MC/Mips/mips-noat.s @@ -0,0 +1,27 @@ +# RUN: not llvm-mc %s -triple=mips-unknown-linux 2>%t0 | FileCheck %s +# RUN: FileCheck -check-prefix=ERROR %s < %t0 + +# We start with $at enabled +# CHECK-LABEL: test1: +# CHECK: lui $1, 1 +# CHECK: addu $1, $1, $2 +# CHECK: lw $2, 0($1) +test1: + lw $2, 65536($2) + +# Check that using $at when .set noat is in effect is an error. +# FIXME: It would be better if the error pointed at the mnemonic instead of the newline +# ERROR: mips-noat.s:[[@LINE+5]]:1: error: Pseudo instruction requires $at, which is not available +# ERROR-NOT: error +test2: + .set noat + lw $2, 65536($2) + +# Can we switch it back on successfully? +# CHECK-LABEL: test3: +# CHECK: lui $1, 1 +# CHECK: addu $1, $1, $2 +# CHECK: lw $2, 0($1) +test3: + .set at + lw $2, 65536($2)