[llvm] [SPARC] Adjust bounds check in %rX name parsing (PR #218301)

via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 23 17:47:03 PDT 2026


https://github.com/koachan created https://github.com/llvm/llvm-project/pull/218301

Fix an off-by-one error that results in %r31 being incorrectly rejected.

This was reported by the folks at OpenBSD.

>From bf44f5b8212925e36620c1fb8be6657cca80b915 Mon Sep 17 00:00:00 2001
From: Koakuma <koachan at protonmail.com>
Date: Mon, 24 Aug 2026 07:42:57 +0700
Subject: [PATCH 1/2] [SPARC] Adjust bounds check in %rX name parsing

Fix the off-by-one error that results in %r31 being incorrectly rejected.
---
 llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp | 2 +-
 llvm/test/MC/Sparc/sparc-alu-instructions.s        | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
index 990a5485943fc..506d1df1664b3 100644
--- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
@@ -1615,7 +1615,7 @@ MCRegister SparcAsmParser::matchRegisterName(const AsmToken &Tok,
   // %r0 - %r31
   int64_t RegNo = 0;
   if (Name.starts_with_insensitive("r") &&
-      !Name.substr(1, 2).getAsInteger(10, RegNo) && RegNo < 31) {
+      !Name.substr(1, 2).getAsInteger(10, RegNo) && RegNo <= 31) {
     RegKind = SparcOperand::rk_IntReg;
     return IntRegs[RegNo];
   }
diff --git a/llvm/test/MC/Sparc/sparc-alu-instructions.s b/llvm/test/MC/Sparc/sparc-alu-instructions.s
index 98a3dc22b7799..c5fb17fd4c0f6 100644
--- a/llvm/test/MC/Sparc/sparc-alu-instructions.s
+++ b/llvm/test/MC/Sparc/sparc-alu-instructions.s
@@ -9,10 +9,13 @@
         add %r8, %r9, %l0
         ! CHECK: add %o0, 10,  %l0    ! encoding: [0xa0,0x02,0x20,0x0a]
         add %o0, 10, %l0
+        ! CHECK: add %g0, %o7, %i7    ! encoding: [0xbe,0x00,0x00,0x0f]
+        add %r0, %r15, %r31
 
         ! CHECK: addcc %g1, %g2, %g3  ! encoding: [0x86,0x80,0x40,0x02]
         addcc %g1, %g2, %g3
 
+
         ! CHECK: addxcc %g1, %g2, %g3 ! encoding: [0x86,0xc0,0x40,0x02]
         addxcc %g1, %g2, %g3
 

>From 6438afb290671606aecfa139d4aa2fba9a6da79a Mon Sep 17 00:00:00 2001
From: Koakuma <koachan at protonmail.com>
Date: Mon, 24 Aug 2026 07:46:23 +0700
Subject: [PATCH 2/2] Remove stray newline

---
 llvm/test/MC/Sparc/sparc-alu-instructions.s | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llvm/test/MC/Sparc/sparc-alu-instructions.s b/llvm/test/MC/Sparc/sparc-alu-instructions.s
index c5fb17fd4c0f6..903eb52034f61 100644
--- a/llvm/test/MC/Sparc/sparc-alu-instructions.s
+++ b/llvm/test/MC/Sparc/sparc-alu-instructions.s
@@ -15,7 +15,6 @@
         ! CHECK: addcc %g1, %g2, %g3  ! encoding: [0x86,0x80,0x40,0x02]
         addcc %g1, %g2, %g3
 
-
         ! CHECK: addxcc %g1, %g2, %g3 ! encoding: [0x86,0xc0,0x40,0x02]
         addxcc %g1, %g2, %g3
 



More information about the llvm-commits mailing list