@@ -200,26 +200,24 @@ CodeGenInstAlias::CodeGenInstAlias(const Record *R, const CodeGenTarget &T)
200
200
201
201
// Decode and validate the arguments of the result.
202
202
unsigned AliasOpNo = 0 ;
203
- for (unsigned i = 0 , e = ResultInst->Operands .size (); i != e; ++i) {
204
-
203
+ for (auto [OpIdx, OpInfo] : enumerate(ResultInst->Operands )) {
205
204
// Tied registers don't have an entry in the result dag unless they're part
206
205
// of a complex operand, in which case we include them anyways, as we
207
206
// don't have any other way to specify the whole operand.
208
- if (ResultInst->Operands [i].MINumOperands == 1 &&
209
- ResultInst->Operands [i].getTiedRegister () != -1 ) {
207
+ if (OpInfo.MINumOperands == 1 && OpInfo.getTiedRegister () != -1 ) {
210
208
// Tied operands of different RegisterClass should be explicit within an
211
209
// instruction's syntax and so cannot be skipped.
212
- int TiedOpNum = ResultInst-> Operands [i] .getTiedRegister ();
213
- if (ResultInst-> Operands [i] .Rec ->getName () ==
210
+ int TiedOpNum = OpInfo .getTiedRegister ();
211
+ if (OpInfo .Rec ->getName () ==
214
212
ResultInst->Operands [TiedOpNum].Rec ->getName ())
215
213
continue ;
216
214
}
217
215
218
216
if (AliasOpNo >= Result->getNumArgs ())
219
217
PrintFatalError (R->getLoc (), " not enough arguments for instruction!" );
220
218
221
- const Record *InstOpRec = ResultInst-> Operands [i] .Rec ;
222
- unsigned NumSubOps = ResultInst-> Operands [i] .MINumOperands ;
219
+ const Record *InstOpRec = OpInfo .Rec ;
220
+ unsigned NumSubOps = OpInfo .MINumOperands ;
223
221
ResultOperand ResOp (static_cast <int64_t >(0 ));
224
222
if (tryAliasOpMatch (Result, AliasOpNo, InstOpRec, (NumSubOps > 1 ),
225
223
R->getLoc (), T, ResOp)) {
@@ -229,12 +227,12 @@ CodeGenInstAlias::CodeGenInstAlias(const Record *R, const CodeGenTarget &T)
229
227
InstOpRec->getValueAsDef (" ParserMatchClass" )
230
228
->getValueAsString (" Name" ) != " Imm" )) {
231
229
ResultOperands.push_back (std::move (ResOp));
232
- ResultInstOperandIndex.emplace_back (i , -1 );
230
+ ResultInstOperandIndex.emplace_back (OpIdx , -1 );
233
231
++AliasOpNo;
234
232
235
233
// Otherwise, we need to match each of the suboperands individually.
236
234
} else {
237
- const DagInit *MIOI = ResultInst-> Operands [i] .MIOperandInfo ;
235
+ const DagInit *MIOI = OpInfo .MIOperandInfo ;
238
236
for (unsigned SubOp = 0 ; SubOp != NumSubOps; ++SubOp) {
239
237
const Record *SubRec = cast<DefInit>(MIOI->getArg (SubOp))->getDef ();
240
238
@@ -244,7 +242,7 @@ CodeGenInstAlias::CodeGenInstAlias(const Record *R, const CodeGenTarget &T)
244
242
Result->getArgName (AliasOpNo)->getAsUnquotedString () + " ." +
245
243
MIOI->getArgName (SubOp)->getAsUnquotedString (),
246
244
SubRec);
247
- ResultInstOperandIndex.emplace_back (i , SubOp);
245
+ ResultInstOperandIndex.emplace_back (OpIdx , SubOp);
248
246
}
249
247
++AliasOpNo;
250
248
}
@@ -254,15 +252,15 @@ CodeGenInstAlias::CodeGenInstAlias(const Record *R, const CodeGenTarget &T)
254
252
// If the argument did not match the instruction operand, and the operand
255
253
// is composed of multiple suboperands, try matching the suboperands.
256
254
if (NumSubOps > 1 ) {
257
- const DagInit *MIOI = ResultInst-> Operands [i] .MIOperandInfo ;
255
+ const DagInit *MIOI = OpInfo .MIOperandInfo ;
258
256
for (unsigned SubOp = 0 ; SubOp != NumSubOps; ++SubOp) {
259
257
if (AliasOpNo >= Result->getNumArgs ())
260
258
PrintFatalError (R->getLoc (), " not enough arguments for instruction!" );
261
259
const Record *SubRec = cast<DefInit>(MIOI->getArg (SubOp))->getDef ();
262
260
if (tryAliasOpMatch (Result, AliasOpNo, SubRec, false , R->getLoc (), T,
263
261
ResOp)) {
264
262
ResultOperands.push_back (ResOp);
265
- ResultInstOperandIndex.emplace_back (i , SubOp);
263
+ ResultInstOperandIndex.emplace_back (OpIdx , SubOp);
266
264
++AliasOpNo;
267
265
} else {
268
266
PrintFatalError (
0 commit comments