@@ -103,7 +103,7 @@ class PPCAsmParser : public MCTargetAsmParser {
103
103
104
104
bool isPPC64 () const { return IsPPC64; }
105
105
106
- bool matchRegisterName (MCRegister &RegNo, int64_t &IntVal);
106
+ MCRegister matchRegisterName (int64_t &IntVal);
107
107
108
108
bool parseRegister (MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override ;
109
109
ParseStatus tryParseRegister (MCRegister &Reg, SMLoc &StartLoc,
@@ -1291,13 +1291,14 @@ bool PPCAsmParser::matchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
1291
1291
llvm_unreachable (" Implement any new match types added!" );
1292
1292
}
1293
1293
1294
- bool PPCAsmParser::matchRegisterName (MCRegister &RegNo, int64_t &IntVal) {
1294
+ MCRegister PPCAsmParser::matchRegisterName (int64_t &IntVal) {
1295
1295
if (getParser ().getTok ().is (AsmToken::Percent))
1296
1296
getParser ().Lex (); // Eat the '%'.
1297
1297
1298
1298
if (!getParser ().getTok ().is (AsmToken::Identifier))
1299
- return true ;
1299
+ return MCRegister () ;
1300
1300
1301
+ MCRegister RegNo;
1301
1302
StringRef Name = getParser ().getTok ().getString ();
1302
1303
if (Name.equals_insensitive (" lr" )) {
1303
1304
RegNo = isPPC64 () ? PPC::LR8 : PPC::LR;
@@ -1345,9 +1346,10 @@ bool PPCAsmParser::matchRegisterName(MCRegister &RegNo, int64_t &IntVal) {
1345
1346
!Name.substr (3 ).getAsInteger (10 , IntVal) && IntVal < 8 ) {
1346
1347
RegNo = DMRRegs[IntVal];
1347
1348
} else
1348
- return true ;
1349
+ return MCRegister ();
1350
+
1349
1351
getParser ().Lex ();
1350
- return false ;
1352
+ return RegNo ;
1351
1353
}
1352
1354
1353
1355
bool PPCAsmParser::parseRegister (MCRegister &Reg, SMLoc &StartLoc,
@@ -1362,9 +1364,8 @@ ParseStatus PPCAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
1362
1364
const AsmToken &Tok = getParser ().getTok ();
1363
1365
StartLoc = Tok.getLoc ();
1364
1366
EndLoc = Tok.getEndLoc ();
1365
- Reg = PPC::NoRegister;
1366
1367
int64_t IntVal;
1367
- if (matchRegisterName (Reg, IntVal))
1368
+ if (! (Reg = matchRegisterName ( IntVal) ))
1368
1369
return ParseStatus::NoMatch;
1369
1370
return ParseStatus::Success;
1370
1371
}
@@ -1541,9 +1542,8 @@ bool PPCAsmParser::parseOperand(OperandVector &Operands) {
1541
1542
// Special handling for register names. These are interpreted
1542
1543
// as immediates corresponding to the register number.
1543
1544
case AsmToken::Percent: {
1544
- MCRegister RegNo;
1545
1545
int64_t IntVal;
1546
- if (matchRegisterName (RegNo, IntVal))
1546
+ if (! matchRegisterName (IntVal))
1547
1547
return Error (S, " invalid register name" );
1548
1548
1549
1549
Operands.push_back (PPCOperand::CreateImm (IntVal, S, E, isPPC64 ()));
@@ -1627,8 +1627,7 @@ bool PPCAsmParser::parseOperand(OperandVector &Operands) {
1627
1627
int64_t IntVal;
1628
1628
switch (getLexer ().getKind ()) {
1629
1629
case AsmToken::Percent: {
1630
- MCRegister RegNo;
1631
- if (matchRegisterName (RegNo, IntVal))
1630
+ if (!matchRegisterName (IntVal))
1632
1631
return Error (S, " invalid register name" );
1633
1632
break ;
1634
1633
}
0 commit comments