@@ -328,9 +328,8 @@ void MCPlusBuilder::getClobberedRegs(const MCInst &Inst,
328
328
329
329
const MCInstrDesc &InstInfo = Info->get (Inst.getOpcode ());
330
330
331
- const MCPhysReg *ImplicitDefs = InstInfo.getImplicitDefs ();
332
- for (unsigned I = 0 , E = InstInfo.getNumImplicitDefs (); I != E; ++I)
333
- Regs |= getAliases (ImplicitDefs[I], /* OnlySmaller=*/ false );
331
+ for (MCPhysReg ImplicitDef : InstInfo.implicit_defs ())
332
+ Regs |= getAliases (ImplicitDef, /* OnlySmaller=*/ false );
334
333
335
334
for (unsigned I = 0 , E = InstInfo.getNumDefs (); I != E; ++I) {
336
335
const MCOperand &Operand = Inst.getOperand (I);
@@ -345,12 +344,10 @@ void MCPlusBuilder::getTouchedRegs(const MCInst &Inst, BitVector &Regs) const {
345
344
346
345
const MCInstrDesc &InstInfo = Info->get (Inst.getOpcode ());
347
346
348
- const MCPhysReg *ImplicitDefs = InstInfo.getImplicitDefs ();
349
- for (unsigned I = 0 , E = InstInfo.getNumImplicitDefs (); I != E; ++I)
350
- Regs |= getAliases (ImplicitDefs[I], /* OnlySmaller=*/ false );
351
- const MCPhysReg *ImplicitUses = InstInfo.getImplicitUses ();
352
- for (unsigned I = 0 , E = InstInfo.getNumImplicitUses (); I != E; ++I)
353
- Regs |= getAliases (ImplicitUses[I], /* OnlySmaller=*/ false );
347
+ for (MCPhysReg ImplicitDef : InstInfo.implicit_defs ())
348
+ Regs |= getAliases (ImplicitDef, /* OnlySmaller=*/ false );
349
+ for (MCPhysReg ImplicitUse : InstInfo.implicit_uses ())
350
+ Regs |= getAliases (ImplicitUse, /* OnlySmaller=*/ false );
354
351
355
352
for (unsigned I = 0 , E = Inst.getNumOperands (); I != E; ++I) {
356
353
if (!Inst.getOperand (I).isReg ())
@@ -365,9 +362,8 @@ void MCPlusBuilder::getWrittenRegs(const MCInst &Inst, BitVector &Regs) const {
365
362
366
363
const MCInstrDesc &InstInfo = Info->get (Inst.getOpcode ());
367
364
368
- const MCPhysReg *ImplicitDefs = InstInfo.getImplicitDefs ();
369
- for (unsigned I = 0 , E = InstInfo.getNumImplicitDefs (); I != E; ++I)
370
- Regs |= getAliases (ImplicitDefs[I], /* OnlySmaller=*/ true );
365
+ for (MCPhysReg ImplicitDef : InstInfo.implicit_defs ())
366
+ Regs |= getAliases (ImplicitDef, /* OnlySmaller=*/ true );
371
367
372
368
for (unsigned I = 0 , E = InstInfo.getNumDefs (); I != E; ++I) {
373
369
const MCOperand &Operand = Inst.getOperand (I);
@@ -382,9 +378,8 @@ void MCPlusBuilder::getUsedRegs(const MCInst &Inst, BitVector &Regs) const {
382
378
383
379
const MCInstrDesc &InstInfo = Info->get (Inst.getOpcode ());
384
380
385
- const MCPhysReg *ImplicitUses = InstInfo.getImplicitUses ();
386
- for (unsigned I = 0 , E = InstInfo.getNumImplicitUses (); I != E; ++I)
387
- Regs |= getAliases (ImplicitUses[I], /* OnlySmaller=*/ true );
381
+ for (MCPhysReg ImplicitUse : InstInfo.implicit_uses ())
382
+ Regs |= getAliases (ImplicitUse, /* OnlySmaller=*/ true );
388
383
389
384
for (unsigned I = 0 , E = Inst.getNumOperands (); I != E; ++I) {
390
385
if (!Inst.getOperand (I).isReg ())
@@ -415,9 +410,8 @@ void MCPlusBuilder::getSrcRegs(const MCInst &Inst, BitVector &Regs) const {
415
410
416
411
const MCInstrDesc &InstInfo = Info->get (Inst.getOpcode ());
417
412
418
- const MCPhysReg *ImplicitUses = InstInfo.getImplicitUses ();
419
- for (unsigned I = 0 , E = InstInfo.getNumImplicitUses (); I != E; ++I)
420
- Regs |= getAliases (ImplicitUses[I], /* OnlySmaller=*/ true );
413
+ for (MCPhysReg ImplicitUse : InstInfo.implicit_uses ())
414
+ Regs |= getAliases (ImplicitUse, /* OnlySmaller=*/ true );
421
415
422
416
for (unsigned I = InstInfo.getNumDefs (), E = InstInfo.getNumOperands ();
423
417
I != E; ++I) {
@@ -438,10 +432,9 @@ bool MCPlusBuilder::hasUseOfPhysReg(const MCInst &MI, unsigned Reg) const {
438
432
if (MI.getOperand (I).isReg () &&
439
433
RegInfo->isSubRegisterEq (Reg, MI.getOperand (I).getReg ()))
440
434
return true ;
441
- if (const uint16_t *ImpUses = InstInfo.ImplicitUses ) {
442
- for (; *ImpUses; ++ImpUses)
443
- if (*ImpUses == Reg || RegInfo->isSubRegister (Reg, *ImpUses))
444
- return true ;
435
+ for (MCPhysReg ImplicitUse : InstInfo.implicit_uses ()) {
436
+ if (ImplicitUse == Reg || RegInfo->isSubRegister (Reg, ImplicitUse))
437
+ return true ;
445
438
}
446
439
return false ;
447
440
}
0 commit comments