[llvm] 97ed2fb - MIR: Fix parse error on empty CustomRegMask
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 27 05:50:41 PDT 2022
Author: Matt Arsenault
Date: 2022-06-27T08:50:35-04:00
New Revision: 97ed2fbc5f646a4118eccd12de588bb344e25c58
URL: https://github.com/llvm/llvm-project/commit/97ed2fbc5f646a4118eccd12de588bb344e25c58
DIFF: https://github.com/llvm/llvm-project/commit/97ed2fbc5f646a4118eccd12de588bb344e25c58.diff
LOG: MIR: Fix parse error on empty CustomRegMask
Added:
llvm/test/CodeGen/MIR/AMDGPU/empty-custom-regmask.mir
Modified:
llvm/lib/CodeGen/MIRParser/MIParser.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index 62ce62f72334b..40ae7053ea09c 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -2707,19 +2707,19 @@ bool MIParser::parseCustomRegisterMaskOperand(MachineOperand &Dest) {
return true;
uint32_t *Mask = MF.allocateRegMask();
- while (true) {
- if (Token.isNot(MIToken::NamedRegister))
- return error("expected a named register");
- Register Reg;
- if (parseNamedRegister(Reg))
- return true;
- lex();
- Mask[Reg / 32] |= 1U << (Reg % 32);
+ do {
+ if (Token.isNot(MIToken::rparen)) {
+ if (Token.isNot(MIToken::NamedRegister))
+ return error("expected a named register");
+ Register Reg;
+ if (parseNamedRegister(Reg))
+ return true;
+ lex();
+ Mask[Reg / 32] |= 1U << (Reg % 32);
+ }
+
// TODO: Report an error if the same register is used more than once.
- if (Token.isNot(MIToken::comma))
- break;
- lex();
- }
+ } while (consumeIfPresent(MIToken::comma));
if (expectAndConsume(MIToken::rparen))
return true;
diff --git a/llvm/test/CodeGen/MIR/AMDGPU/empty-custom-regmask.mir b/llvm/test/CodeGen/MIR/AMDGPU/empty-custom-regmask.mir
new file mode 100644
index 0000000000000..8dfc3ddc427f6
--- /dev/null
+++ b/llvm/test/CodeGen/MIR/AMDGPU/empty-custom-regmask.mir
@@ -0,0 +1,18 @@
+# RUN: llc -march=amdgcn -run-pass=none -o - %s | FileCheck %s
+
+# Make sure there's no parse error on empty CustomRegMask or trailing comma
+
+# CHECK: $sgpr30_sgpr31 = SI_CALL %0, 0, CustomRegMask()
+# CHECK: $sgpr30_sgpr31 = SI_CALL %0, 0, CustomRegMask($vgpr0)
+
+---
+name: func
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $sgpr8_sgpr9
+ %0:sreg_64_xexec = COPY $sgpr8_sgpr9
+ $sgpr30_sgpr31 = SI_CALL %0, 0, CustomRegMask()
+ $sgpr30_sgpr31 = SI_CALL %0, 0, CustomRegMask($vgpr0,)
+ S_ENDPGM 0
+...
More information about the llvm-commits
mailing list