[llvm] r204932 - [mips] Attempting to use register $32 should be an error instead of an assertion.

Daniel Sanders daniel.sanders at imgtec.com
Thu Mar 27 08:00:44 PDT 2014


Author: dsanders
Date: Thu Mar 27 10:00:44 2014
New Revision: 204932

URL: http://llvm.org/viewvc/llvm-project?rev=204932&view=rev
Log:
[mips] Attempting to use register $32 should be an error instead of an assertion.

Reviewers: matheusalmeida

Reviewed By: matheusalmeida

Differential Revision: http://llvm-reviews.chandlerc.com/D3201

Added:
    llvm/trunk/test/MC/Mips/mips-register-names-invalid.s
Modified:
    llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp

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=204932&r1=204931&r2=204932&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Thu Mar 27 10:00:44 2014
@@ -1217,7 +1217,7 @@ unsigned MipsAsmParser::getGPR(int RegNo
 
 int MipsAsmParser::matchRegisterByNumber(unsigned RegNum, unsigned RegClass) {
   if (RegNum >
-      getContext().getRegisterInfo()->getRegClass(RegClass).getNumRegs())
+      getContext().getRegisterInfo()->getRegClass(RegClass).getNumRegs() - 1)
     return -1;
 
   if (RegClass == Mips::GPR32RegClassID || RegClass == Mips::GPR64RegClassID)

Added: llvm/trunk/test/MC/Mips/mips-register-names-invalid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips-register-names-invalid.s?rev=204932&view=auto
==============================================================================
--- llvm/trunk/test/MC/Mips/mips-register-names-invalid.s (added)
+++ llvm/trunk/test/MC/Mips/mips-register-names-invalid.s Thu Mar 27 10:00:44 2014
@@ -0,0 +1,8 @@
+# RUN: not llvm-mc %s -triple=mips-unknown-freebsd -show-encoding 2>%t0
+# RUN: FileCheck %s < %t0
+
+# $32 used to trigger an assertion instead of the usual error message due to
+# an off-by-one bug.
+
+# CHECK: :[[@LINE+1]]:18: error: invalid operand for instruction
+        add     $32, $0, $0





More information about the llvm-commits mailing list