Skip to content

Commit 55808d8

Browse files
committed
[AVR] Use MCRegister in AsmParser. NFC
1 parent 2e7c7d2 commit 55808d8

File tree

1 file changed

+45
-46
lines changed

1 file changed

+45
-46
lines changed

llvm/lib/Target/AVR/AsmParser/AVRAsmParser.cpp

Lines changed: 45 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ class AVRAsmParser : public MCTargetAsmParser {
6868
ParseStatus parseMemriOperand(OperandVector &Operands);
6969

7070
bool parseOperand(OperandVector &Operands, bool maybeReg);
71-
int parseRegisterName(MCRegister (*matchFn)(StringRef));
72-
int parseRegisterName();
73-
int parseRegister(bool RestoreOnFailure = false);
71+
MCRegister parseRegisterName(MCRegister (*matchFn)(StringRef));
72+
MCRegister parseRegisterName();
73+
MCRegister parseRegister(bool RestoreOnFailure = false);
7474
bool tryParseRegisterOperand(OperandVector &Operands);
7575
bool tryParseExpression(OperandVector &Operands, int64_t offset);
7676
bool tryParseRelocExpression(OperandVector &Operands);
@@ -79,7 +79,7 @@ class AVRAsmParser : public MCTargetAsmParser {
7979
unsigned validateTargetOperandClass(MCParsedAsmOperand &Op,
8080
unsigned Kind) override;
8181

82-
unsigned toDREG(unsigned Reg, unsigned From = AVR::sub_lo) {
82+
MCRegister toDREG(MCRegister Reg, unsigned From = AVR::sub_lo) {
8383
MCRegisterClass const *Class = &AVRMCRegisterClasses[AVR::DREGSRegClassID];
8484
return MRI->getMatchingSuperReg(Reg, From, Class);
8585
}
@@ -113,15 +113,15 @@ class AVROperand : public MCParsedAsmOperand {
113113
public:
114114
AVROperand(StringRef Tok, SMLoc const &S)
115115
: Kind(k_Token), Tok(Tok), Start(S), End(S) {}
116-
AVROperand(unsigned Reg, SMLoc const &S, SMLoc const &E)
116+
AVROperand(MCRegister Reg, SMLoc const &S, SMLoc const &E)
117117
: Kind(k_Register), RegImm({Reg, nullptr}), Start(S), End(E) {}
118118
AVROperand(MCExpr const *Imm, SMLoc const &S, SMLoc const &E)
119119
: Kind(k_Immediate), RegImm({0, Imm}), Start(S), End(E) {}
120-
AVROperand(unsigned Reg, MCExpr const *Imm, SMLoc const &S, SMLoc const &E)
120+
AVROperand(MCRegister Reg, MCExpr const *Imm, SMLoc const &S, SMLoc const &E)
121121
: Kind(k_Memri), RegImm({Reg, Imm}), Start(S), End(E) {}
122122

123123
struct RegisterImmediate {
124-
unsigned Reg;
124+
MCRegister Reg;
125125
MCExpr const *Imm;
126126
};
127127
union {
@@ -210,9 +210,9 @@ class AVROperand : public MCParsedAsmOperand {
210210
return std::make_unique<AVROperand>(Str, S);
211211
}
212212

213-
static std::unique_ptr<AVROperand> CreateReg(unsigned RegNum, SMLoc S,
213+
static std::unique_ptr<AVROperand> CreateReg(MCRegister Reg, SMLoc S,
214214
SMLoc E) {
215-
return std::make_unique<AVROperand>(RegNum, S, E);
215+
return std::make_unique<AVROperand>(Reg, S, E);
216216
}
217217

218218
static std::unique_ptr<AVROperand> CreateImm(const MCExpr *Val, SMLoc S,
@@ -221,28 +221,28 @@ class AVROperand : public MCParsedAsmOperand {
221221
}
222222

223223
static std::unique_ptr<AVROperand>
224-
CreateMemri(unsigned RegNum, const MCExpr *Val, SMLoc S, SMLoc E) {
225-
return std::make_unique<AVROperand>(RegNum, Val, S, E);
224+
CreateMemri(MCRegister Reg, const MCExpr *Val, SMLoc S, SMLoc E) {
225+
return std::make_unique<AVROperand>(Reg, Val, S, E);
226226
}
227227

228228
void makeToken(StringRef Token) {
229229
Kind = k_Token;
230230
Tok = Token;
231231
}
232232

233-
void makeReg(unsigned RegNo) {
233+
void makeReg(MCRegister Reg) {
234234
Kind = k_Register;
235-
RegImm = {RegNo, nullptr};
235+
RegImm = {Reg, nullptr};
236236
}
237237

238238
void makeImm(MCExpr const *Ex) {
239239
Kind = k_Immediate;
240240
RegImm = {0, Ex};
241241
}
242242

243-
void makeMemri(unsigned RegNo, MCExpr const *Imm) {
243+
void makeMemri(MCRegister Reg, MCExpr const *Imm) {
244244
Kind = k_Memri;
245-
RegImm = {RegNo, Imm};
245+
RegImm = {Reg, Imm};
246246
}
247247

248248
SMLoc getStartLoc() const override { return Start; }
@@ -346,36 +346,36 @@ bool AVRAsmParser::MatchAndEmitInstruction(SMLoc Loc, unsigned &Opcode,
346346

347347
/// Parses a register name using a given matching function.
348348
/// Checks for lowercase or uppercase if necessary.
349-
int AVRAsmParser::parseRegisterName(MCRegister (*matchFn)(StringRef)) {
349+
MCRegister AVRAsmParser::parseRegisterName(MCRegister (*matchFn)(StringRef)) {
350350
StringRef Name = Parser.getTok().getString();
351351

352-
int RegNum = matchFn(Name);
352+
MCRegister Reg = matchFn(Name);
353353

354354
// GCC supports case insensitive register names. Some of the AVR registers
355355
// are all lower case, some are all upper case but non are mixed. We prefer
356356
// to use the original names in the register definitions. That is why we
357357
// have to test both upper and lower case here.
358-
if (RegNum == AVR::NoRegister) {
359-
RegNum = matchFn(Name.lower());
358+
if (!Reg) {
359+
Reg = matchFn(Name.lower());
360360
}
361-
if (RegNum == AVR::NoRegister) {
362-
RegNum = matchFn(Name.upper());
361+
if (!Reg) {
362+
Reg = matchFn(Name.upper());
363363
}
364364

365-
return RegNum;
365+
return Reg;
366366
}
367367

368-
int AVRAsmParser::parseRegisterName() {
369-
int RegNum = parseRegisterName(&MatchRegisterName);
368+
MCRegister AVRAsmParser::parseRegisterName() {
369+
MCRegister Reg = parseRegisterName(&MatchRegisterName);
370370

371-
if (RegNum == AVR::NoRegister)
372-
RegNum = parseRegisterName(&MatchRegisterAltName);
371+
if (!Reg)
372+
Reg = parseRegisterName(&MatchRegisterAltName);
373373

374-
return RegNum;
374+
return Reg;
375375
}
376376

377-
int AVRAsmParser::parseRegister(bool RestoreOnFailure) {
378-
int RegNum = AVR::NoRegister;
377+
MCRegister AVRAsmParser::parseRegister(bool RestoreOnFailure) {
378+
MCRegister Reg;
379379

380380
if (Parser.getTok().is(AsmToken::Identifier)) {
381381
// Check for register pair syntax
@@ -387,32 +387,32 @@ int AVRAsmParser::parseRegister(bool RestoreOnFailure) {
387387

388388
if (Parser.getTok().is(AsmToken::Identifier)) {
389389
// Convert lower (even) register to DREG
390-
RegNum = toDREG(parseRegisterName());
390+
Reg = toDREG(parseRegisterName());
391391
}
392-
if (RegNum == AVR::NoRegister && RestoreOnFailure) {
392+
if (!Reg && RestoreOnFailure) {
393393
getLexer().UnLex(std::move(ColonTok));
394394
getLexer().UnLex(std::move(HighTok));
395395
}
396396
} else {
397-
RegNum = parseRegisterName();
397+
Reg = parseRegisterName();
398398
}
399399
}
400-
return RegNum;
400+
return Reg;
401401
}
402402

403403
bool AVRAsmParser::tryParseRegisterOperand(OperandVector &Operands) {
404-
int RegNo = parseRegister();
404+
MCRegister Reg = parseRegister();
405405

406-
if (RegNo == AVR::NoRegister)
406+
if (!Reg)
407407
return true;
408408

409409
// Reject R0~R15 on avrtiny.
410-
if (AVR::R0 <= RegNo && RegNo <= AVR::R15 &&
410+
if (AVR::R0 <= Reg && Reg <= AVR::R15 &&
411411
STI.hasFeature(AVR::FeatureTinyEncoding))
412412
return Error(Parser.getTok().getLoc(), "invalid register on avrtiny");
413413

414414
AsmToken const &T = Parser.getTok();
415-
Operands.push_back(AVROperand::CreateReg(RegNo, T.getLoc(), T.getEndLoc()));
415+
Operands.push_back(AVROperand::CreateReg(Reg, T.getLoc(), T.getEndLoc()));
416416
Parser.Lex(); // Eat register token.
417417

418418
return false;
@@ -569,13 +569,13 @@ ParseStatus AVRAsmParser::parseMemriOperand(OperandVector &Operands) {
569569

570570
SMLoc E, S;
571571
MCExpr const *Expression;
572-
int RegNo;
572+
MCRegister Reg;
573573

574574
// Parse register.
575575
{
576-
RegNo = parseRegister();
576+
Reg = parseRegister();
577577

578-
if (RegNo == AVR::NoRegister)
578+
if (!Reg)
579579
return ParseStatus::Failure;
580580

581581
S = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
@@ -590,7 +590,7 @@ ParseStatus AVRAsmParser::parseMemriOperand(OperandVector &Operands) {
590590
E = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
591591
}
592592

593-
Operands.push_back(AVROperand::CreateMemri(RegNo, Expression, S, E));
593+
Operands.push_back(AVROperand::CreateMemri(Reg, Expression, S, E));
594594

595595
return ParseStatus::Success;
596596
}
@@ -761,9 +761,8 @@ unsigned AVRAsmParser::validateTargetOperandClass(MCParsedAsmOperand &AsmOp,
761761

762762
std::ostringstream RegName;
763763
RegName << "r" << RegNum;
764-
RegNum = MatchRegisterName(RegName.str());
765-
if (RegNum != AVR::NoRegister) {
766-
Op.makeReg(RegNum);
764+
if (MCRegister Reg = MatchRegisterName(RegName.str())) {
765+
Op.makeReg(Reg);
767766
if (validateOperandClass(Op, Expected) == Match_Success) {
768767
return Match_Success;
769768
}
@@ -776,9 +775,9 @@ unsigned AVRAsmParser::validateTargetOperandClass(MCParsedAsmOperand &AsmOp,
776775
// If the instruction uses a register pair but we got a single, lower
777776
// register we perform a "class cast".
778777
if (isSubclass(Expected, MCK_DREGS)) {
779-
unsigned correspondingDREG = toDREG(Op.getReg());
778+
MCRegister correspondingDREG = toDREG(Op.getReg());
780779

781-
if (correspondingDREG != AVR::NoRegister) {
780+
if (correspondingDREG) {
782781
Op.makeReg(correspondingDREG);
783782
return validateOperandClass(Op, Expected);
784783
}

0 commit comments

Comments
 (0)