[llvm] 5e5b656 - [MC] Make `MCParsedAsmOperand::getReg()` return `MCRegister` (#86444)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 24 19:13:52 PDT 2024
Author: Sergei Barannikov
Date: 2024-03-25T05:13:48+03:00
New Revision: 5e5b6561029665e69e033cff4216fecb78302259
URL: https://github.com/llvm/llvm-project/commit/5e5b6561029665e69e033cff4216fecb78302259
DIFF: https://github.com/llvm/llvm-project/commit/5e5b6561029665e69e033cff4216fecb78302259.diff
LOG: [MC] Make `MCParsedAsmOperand::getReg()` return `MCRegister` (#86444)
Added:
Modified:
llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h
llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
llvm/lib/MC/MCParser/MCTargetAsmParser.cpp
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp
llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp
llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp
llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp
llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
llvm/lib/Target/X86/AsmParser/X86Operand.h
llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
llvm/utils/TableGen/AsmMatcherEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h b/llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h
index 0c9668904e8261..27ecb7b85d2291 100644
--- a/llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h
+++ b/llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h
@@ -15,6 +15,7 @@
namespace llvm {
+class MCRegister;
class raw_ostream;
/// MCParsedAsmOperand - This abstract class represents a source-level assembly
@@ -57,7 +58,7 @@ class MCParsedAsmOperand {
virtual bool isImm() const = 0;
/// isReg - Is this a register operand?
virtual bool isReg() const = 0;
- virtual unsigned getReg() const = 0;
+ virtual MCRegister getReg() const = 0;
/// isMem - Is this a memory operand?
virtual bool isMem() const = 0;
diff --git a/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h b/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
index 7edd3f8ce4904c..49ce417e6fbb20 100644
--- a/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
+++ b/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
@@ -514,9 +514,7 @@ class MCTargetAsmParser : public MCAsmParserExtension {
/// by the tied-operands checks in the AsmMatcher. This method can be
/// overridden to allow e.g. a sub- or super-register as the tied operand.
virtual bool areEqualRegs(const MCParsedAsmOperand &Op1,
- const MCParsedAsmOperand &Op2) const {
- return Op1.isReg() && Op2.isReg() && Op1.getReg() == Op2.getReg();
- }
+ const MCParsedAsmOperand &Op2) const;
// Return whether this parser uses assignment statements with equals tokens
virtual bool equalIsAsmAssignment() { return true; };
diff --git a/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp b/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp
index 0db5fb36f79508..665d92eb9a21c5 100644
--- a/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp
+++ b/llvm/lib/MC/MCParser/MCTargetAsmParser.cpp
@@ -8,6 +8,7 @@
#include "llvm/MC/MCParser/MCTargetAsmParser.h"
#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCRegister.h"
using namespace llvm;
@@ -48,3 +49,8 @@ ParseStatus MCTargetAsmParser::parseDirective(AsmToken DirectiveID) {
return ParseStatus::Failure;
return ParseStatus::NoMatch;
}
+
+bool MCTargetAsmParser::areEqualRegs(const MCParsedAsmOperand &Op1,
+ const MCParsedAsmOperand &Op2) const {
+ return Op1.isReg() && Op2.isReg() && Op1.getReg() == Op2.getReg();
+}
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index b807aaf76fdb00..21643ebb413847 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -654,7 +654,7 @@ class AArch64Operand : public MCParsedAsmOperand {
return Barrier.HasnXSModifier;
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == k_Register && "Invalid access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 529705479646fc..4648df199c741d 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -981,7 +981,7 @@ class AMDGPUOperand : public MCParsedAsmOperand {
return Imm.Type;
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(isRegKind());
return Reg.RegNo;
}
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index 9cfdb15a0f43d3..2ad576ab1a9caa 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -1002,7 +1002,7 @@ class ARMOperand : public MCParsedAsmOperand {
return StringRef(Tok.Data, Tok.Length);
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert((Kind == k_Register || Kind == k_CCOut) && "Invalid access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp b/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp
index db4aa03437c648..383dfcc31117c1 100644
--- a/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp
+++ b/llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp
@@ -195,7 +195,7 @@ class AVROperand : public MCParsedAsmOperand {
return Tok;
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert((Kind == k_Register || Kind == k_Memri) && "Invalid access!");
return RegImm.Reg;
diff --git a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
index 1688355f427cc7..9672ed009e9be1 100644
--- a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
+++ b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
@@ -148,7 +148,7 @@ struct BPFOperand : public MCParsedAsmOperand {
/// getEndLoc - Gets location of the last token of this operand
SMLoc getEndLoc() const override { return EndLoc; }
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == Register && "Invalid type access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp b/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
index 4711e58bbed611..30bd3dcefa605a 100644
--- a/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
+++ b/llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
@@ -400,7 +400,7 @@ struct CSKYOperand : public MCParsedAsmOperand {
/// Gets location of the last token of this operand.
SMLoc getEndLoc() const override { return EndLoc; }
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == Register && "Invalid type access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp b/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
index 864591d4eb9552..092cccbcca9c47 100644
--- a/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
+++ b/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
@@ -245,7 +245,7 @@ struct HexagonOperand : public MCParsedAsmOperand {
/// getEndLoc - Get the location of the last token of this operand.
SMLoc getEndLoc() const override { return EndLoc; }
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == Register && "Invalid access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
index ff3649b77e351e..6ab1375b974ec6 100644
--- a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
+++ b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp
@@ -151,7 +151,7 @@ struct LanaiOperand : public MCParsedAsmOperand {
// getEndLoc - Gets location of the last token of this operand
SMLoc getEndLoc() const override { return EndLoc; }
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(isReg() && "Invalid type access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp b/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
index cf163e4e12001c..20284b18428bd8 100644
--- a/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+++ b/llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
@@ -467,9 +467,9 @@ class LoongArchOperand : public MCParsedAsmOperand {
/// Gets location of the last token of this operand.
SMLoc getEndLoc() const override { return EndLoc; }
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == KindTy::Register && "Invalid type access!");
- return Reg.RegNum.id();
+ return Reg.RegNum;
}
const MCExpr *getImm() const {
diff --git a/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp b/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp
index b2c0fda1ccc24a..126176133dc027 100644
--- a/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp
+++ b/llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp
@@ -157,7 +157,7 @@ class M68kOperand : public MCParsedAsmOperand {
bool isDReg() const;
bool isFPDReg() const;
bool isFPCReg() const;
- unsigned getReg() const override;
+ MCRegister getReg() const override;
void addRegOperands(MCInst &Inst, unsigned N) const;
static std::unique_ptr<M68kOperand> createMemOp(M68kMemOp MemOp, SMLoc Start,
@@ -312,7 +312,7 @@ bool M68kOperand::isReg() const {
return Kind == KindTy::MemOp && MemOp.Op == M68kMemOp::Kind::Reg;
}
-unsigned M68kOperand::getReg() const {
+MCRegister M68kOperand::getReg() const {
assert(isReg());
return MemOp.OuterReg;
}
diff --git a/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp b/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp
index 818a468612a57e..2bc1a89ef59cf0 100644
--- a/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp
+++ b/llvm/lib/Target/MSP430/AsmParser/MSP430AsmParser.cpp
@@ -183,7 +183,7 @@ class MSP430Operand : public MCParsedAsmOperand {
return Tok;
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == k_Reg && "Invalid access!");
return Reg;
}
diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index 9d6e8dc573a8d1..076e0a20cb97e9 100644
--- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -1458,7 +1458,7 @@ class MipsOperand : public MCParsedAsmOperand {
return StringRef(Tok.Data, Tok.Length);
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
// As a special case until we sort out the definition of div/divu, accept
// $0/$zero here so that MCK_ZERO works correctly.
if (Kind == k_RegisterIndex && RegIdx.Index == 0 &&
diff --git a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
index 8108cfa521c807..55978af38000de 100644
--- a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
+++ b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
@@ -276,9 +276,11 @@ struct PPCOperand : public MCParsedAsmOperand {
return TLSReg.Sym;
}
- unsigned getReg() const override {
+ MCRegister getReg() const override { llvm_unreachable("Not implemented"); }
+
+ unsigned getRegNum() const {
assert(isRegNumber() && "Invalid access!");
- return (unsigned) Imm.Val;
+ return (unsigned)Imm.Val;
}
unsigned getFpReg() const {
@@ -459,22 +461,22 @@ struct PPCOperand : public MCParsedAsmOperand {
void addRegGPRCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(RRegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(RRegs[getRegNum()]));
}
void addRegGPRCNoR0Operands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(RRegsNoR0[getReg()]));
+ Inst.addOperand(MCOperand::createReg(RRegsNoR0[getRegNum()]));
}
void addRegG8RCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(XRegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(XRegs[getRegNum()]));
}
void addRegG8RCNoX0Operands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(XRegsNoX0[getReg()]));
+ Inst.addOperand(MCOperand::createReg(XRegsNoX0[getRegNum()]));
}
void addRegG8pRCOperands(MCInst &Inst, unsigned N) const {
@@ -498,12 +500,12 @@ struct PPCOperand : public MCParsedAsmOperand {
void addRegF4RCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(FRegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(FRegs[getRegNum()]));
}
void addRegF8RCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(FRegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(FRegs[getRegNum()]));
}
void addRegFpRCOperands(MCInst &Inst, unsigned N) const {
@@ -513,12 +515,12 @@ struct PPCOperand : public MCParsedAsmOperand {
void addRegVFRCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(VFRegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(VFRegs[getRegNum()]));
}
void addRegVRRCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(VRegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(VRegs[getRegNum()]));
}
void addRegVSRCOperands(MCInst &Inst, unsigned N) const {
@@ -538,12 +540,12 @@ struct PPCOperand : public MCParsedAsmOperand {
void addRegSPE4RCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(RRegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(RRegs[getRegNum()]));
}
void addRegSPERCOperands(MCInst &Inst, unsigned N) const {
assert(N == 1 && "Invalid number of operands!");
- Inst.addOperand(MCOperand::createReg(SPERegs[getReg()]));
+ Inst.addOperand(MCOperand::createReg(SPERegs[getRegNum()]));
}
void addRegACCRCOperands(MCInst &Inst, unsigned N) const {
diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
index cb2ba52390e2a4..5e594d6cad6bbd 100644
--- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
@@ -977,9 +977,9 @@ struct RISCVOperand final : public MCParsedAsmOperand {
return Imm.IsRV64;
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == KindTy::Register && "Invalid type access!");
- return Reg.RegNum.id();
+ return Reg.RegNum;
}
StringRef getSysReg() const {
diff --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
index be4ec1e9dce2a6..67e2b9d7c99782 100644
--- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
@@ -307,7 +307,7 @@ class SparcOperand : public MCParsedAsmOperand {
return StringRef(Tok.Data, Tok.Length);
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert((Kind == k_Register) && "Invalid access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
index a58e8e0dfedfaf..f2c04215d12dda 100644
--- a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
+++ b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
@@ -227,7 +227,7 @@ class SystemZOperand : public MCParsedAsmOperand {
bool isReg(RegisterKind RegKind) const {
return Kind == KindReg && Reg.Kind == RegKind;
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == KindReg && "Not a register");
return Reg.Num;
}
diff --git a/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp b/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp
index f9e30a3a9378a9..691fe8fe3aa446 100644
--- a/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp
+++ b/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp
@@ -344,7 +344,7 @@ class VEOperand : public MCParsedAsmOperand {
return StringRef(Tok.Data, Tok.Length);
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert((Kind == k_Register) && "Invalid access!");
return Reg.RegNum;
}
diff --git a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
index 3cc4d50271eb11..020c0d6229d22d 100644
--- a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
+++ b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
@@ -100,7 +100,7 @@ struct WebAssemblyOperand : public MCParsedAsmOperand {
bool isReg() const override { return false; }
bool isBrList() const { return Kind == BrList; }
- unsigned getReg() const override {
+ MCRegister getReg() const override {
llvm_unreachable("Assembly inspects a register operand");
return 0;
}
diff --git a/llvm/lib/Target/X86/AsmParser/X86Operand.h b/llvm/lib/Target/X86/AsmParser/X86Operand.h
index 641158cb351fc4..78669784dd035b 100644
--- a/llvm/lib/Target/X86/AsmParser/X86Operand.h
+++ b/llvm/lib/Target/X86/AsmParser/X86Operand.h
@@ -167,7 +167,7 @@ struct X86Operand final : public MCParsedAsmOperand {
Tok.Length = Value.size();
}
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == Register && "Invalid access!");
return Reg.RegNo;
}
diff --git a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
index 3f808298527f8f..1fa00af2111e0c 100644
--- a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
+++ b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp
@@ -244,7 +244,7 @@ struct XtensaOperand : public MCParsedAsmOperand {
/// getEndLoc - Gets location of the last token of this operand
SMLoc getEndLoc() const override { return EndLoc; }
- unsigned getReg() const override {
+ MCRegister getReg() const override {
assert(Kind == Register && "Invalid type access!");
return Reg.RegNum;
}
diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
index 5df7990d8fc2c8..0a2b1cf0f9a6b6 100644
--- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
@@ -2519,7 +2519,7 @@ static void emitValidateOperandClass(AsmMatcherInfo &Info, raw_ostream &OS) {
// Check for register operands, including sub-classes.
OS << " if (Operand.isReg()) {\n";
OS << " MatchClassKind OpKind;\n";
- OS << " switch (Operand.getReg()) {\n";
+ OS << " switch (Operand.getReg().id()) {\n";
OS << " default: OpKind = InvalidMatchClass; break;\n";
for (const auto &RC : Info.RegisterClasses)
OS << " case " << RC.first->getValueAsString("Namespace")
More information about the llvm-commits
mailing list