From 3527e5fcb374ae48128a96935387490908a06b97 Mon Sep 17 00:00:00 2001 From: Daniel Sanders Date: Tue, 25 Mar 2014 13:01:06 +0000 Subject: [PATCH] [mips] '.set at=$0' should be equivalent to '.set noat' Differential Revision: http://llvm-reviews.chandlerc.com/D3171 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204714 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/AsmParser/MipsAsmParser.cpp | 2 +- test/MC/Mips/mips-noat.s | 15 +++++++++++---- test/MC/Mips/set-at-directive-explicit-at.s | 3 +++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp index 74e19c5be33..078b554e2e0 100644 --- a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp +++ b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -2352,7 +2352,7 @@ bool MipsAsmParser::parseSetAtDirective() { return false; } - if (AtRegNo < 1 || AtRegNo > 31) { + if (AtRegNo < 0 || AtRegNo > 31) { reportParseError("unexpected token in statement"); return false; } diff --git a/test/MC/Mips/mips-noat.s b/test/MC/Mips/mips-noat.s index 152a1ee4067..b83c5178077 100644 --- a/test/MC/Mips/mips-noat.s +++ b/test/MC/Mips/mips-noat.s @@ -1,7 +1,8 @@ # RUN: not llvm-mc %s -triple=mips-unknown-linux 2>%t0 | FileCheck %s # RUN: FileCheck -check-prefix=ERROR %s < %t0 +# Check that using the assembler temporary when .set noat is in effect is an error. -# We start with $at enabled +# We start with the assembler temporary enabled # CHECK-LABEL: test1: # CHECK: lui $1, 1 # CHECK: addu $1, $1, $2 @@ -9,10 +10,8 @@ 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 +# ERROR: mips-noat.s:[[@LINE+4]]:1: error: Pseudo instruction requires $at, which is not available test2: .set noat lw $2, 65536($2) @@ -25,3 +24,11 @@ test2: 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 diff --git a/test/MC/Mips/set-at-directive-explicit-at.s b/test/MC/Mips/set-at-directive-explicit-at.s index b8c8adc8818..71f1a98fae4 100644 --- a/test/MC/Mips/set-at-directive-explicit-at.s +++ b/test/MC/Mips/set-at-directive-explicit-at.s @@ -26,6 +26,9 @@ foo: # CHECK: jr $1 # encoding: [0x08,0x00,0x20,0x00] .set noat jr $at +# CHECK: jr $1 # encoding: [0x08,0x00,0x20,0x00] + .set at=$0 + jr $at # CHECK: jr $16 # encoding: [0x08,0x00,0x00,0x02] # WARNINGS: :[[@LINE+2]]:12: warning: Used $16 with ".set at=$16"