@@ -594,19 +594,16 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
594
594
LLVM_DEBUG (dbgs () << " MCP: ForwardCopyPropagateBlock " << MBB.getName ()
595
595
<< " \n " );
596
596
597
- for (MachineBasicBlock::iterator I = MBB.begin (), E = MBB.end (); I != E; ) {
598
- MachineInstr *MI = &*I;
599
- ++I;
600
-
597
+ for (MachineInstr &MI : llvm::make_early_inc_range (MBB)) {
601
598
// Analyze copies (which don't overlap themselves).
602
- if (MI-> isCopy () && !TRI->regsOverlap (MI-> getOperand (0 ).getReg (),
603
- MI-> getOperand (1 ).getReg ())) {
604
- assert (MI-> getOperand (0 ).getReg ().isPhysical () &&
605
- MI-> getOperand (1 ).getReg ().isPhysical () &&
599
+ if (MI. isCopy () && !TRI->regsOverlap (MI. getOperand (0 ).getReg (),
600
+ MI. getOperand (1 ).getReg ())) {
601
+ assert (MI. getOperand (0 ).getReg ().isPhysical () &&
602
+ MI. getOperand (1 ).getReg ().isPhysical () &&
606
603
" MachineCopyPropagation should be run after register allocation!" );
607
604
608
- MCRegister Def = MI-> getOperand (0 ).getReg ().asMCReg ();
609
- MCRegister Src = MI-> getOperand (1 ).getReg ().asMCReg ();
605
+ MCRegister Def = MI. getOperand (0 ).getReg ().asMCReg ();
606
+ MCRegister Src = MI. getOperand (1 ).getReg ().asMCReg ();
610
607
611
608
// The two copies cancel out and the source of the first copy
612
609
// hasn't been overridden, eliminate the second one. e.g.
@@ -623,31 +620,31 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
623
620
// %ecx = COPY %eax
624
621
// =>
625
622
// %ecx = COPY %eax
626
- if (eraseIfRedundant (* MI, Def, Src) || eraseIfRedundant (* MI, Src, Def))
623
+ if (eraseIfRedundant (MI, Def, Src) || eraseIfRedundant (MI, Src, Def))
627
624
continue ;
628
625
629
- forwardUses (* MI);
626
+ forwardUses (MI);
630
627
631
628
// Src may have been changed by forwardUses()
632
- Src = MI-> getOperand (1 ).getReg ().asMCReg ();
629
+ Src = MI. getOperand (1 ).getReg ().asMCReg ();
633
630
634
631
// If Src is defined by a previous copy, the previous copy cannot be
635
632
// eliminated.
636
- ReadRegister (Src, * MI, RegularUse);
637
- for (const MachineOperand &MO : MI-> implicit_operands ()) {
633
+ ReadRegister (Src, MI, RegularUse);
634
+ for (const MachineOperand &MO : MI. implicit_operands ()) {
638
635
if (!MO.isReg () || !MO.readsReg ())
639
636
continue ;
640
637
MCRegister Reg = MO.getReg ().asMCReg ();
641
638
if (!Reg)
642
639
continue ;
643
- ReadRegister (Reg, * MI, RegularUse);
640
+ ReadRegister (Reg, MI, RegularUse);
644
641
}
645
642
646
- LLVM_DEBUG (dbgs () << " MCP: Copy is a deletion candidate: " ; MI-> dump ());
643
+ LLVM_DEBUG (dbgs () << " MCP: Copy is a deletion candidate: " ; MI. dump ());
647
644
648
645
// Copy is now a candidate for deletion.
649
646
if (!MRI->isReserved (Def))
650
- MaybeDeadCopies.insert (MI);
647
+ MaybeDeadCopies.insert (& MI);
651
648
652
649
// If 'Def' is previously source of another copy, then this earlier copy's
653
650
// source is no longer available. e.g.
@@ -657,7 +654,7 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
657
654
// ...
658
655
// %xmm2 = copy %xmm9
659
656
Tracker.clobberRegister (Def, *TRI);
660
- for (const MachineOperand &MO : MI-> implicit_operands ()) {
657
+ for (const MachineOperand &MO : MI. implicit_operands ()) {
661
658
if (!MO.isReg () || !MO.isDef ())
662
659
continue ;
663
660
MCRegister Reg = MO.getReg ().asMCReg ();
@@ -666,29 +663,29 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
666
663
Tracker.clobberRegister (Reg, *TRI);
667
664
}
668
665
669
- Tracker.trackCopy (MI, *TRI);
666
+ Tracker.trackCopy (& MI, *TRI);
670
667
671
668
continue ;
672
669
}
673
670
674
671
// Clobber any earlyclobber regs first.
675
- for (const MachineOperand &MO : MI-> operands ())
672
+ for (const MachineOperand &MO : MI. operands ())
676
673
if (MO.isReg () && MO.isEarlyClobber ()) {
677
674
MCRegister Reg = MO.getReg ().asMCReg ();
678
675
// If we have a tied earlyclobber, that means it is also read by this
679
676
// instruction, so we need to make sure we don't remove it as dead
680
677
// later.
681
678
if (MO.isTied ())
682
- ReadRegister (Reg, * MI, RegularUse);
679
+ ReadRegister (Reg, MI, RegularUse);
683
680
Tracker.clobberRegister (Reg, *TRI);
684
681
}
685
682
686
- forwardUses (* MI);
683
+ forwardUses (MI);
687
684
688
685
// Not a copy.
689
686
SmallVector<Register, 2 > Defs;
690
687
const MachineOperand *RegMask = nullptr ;
691
- for (const MachineOperand &MO : MI-> operands ()) {
688
+ for (const MachineOperand &MO : MI. operands ()) {
692
689
if (MO.isRegMask ())
693
690
RegMask = &MO;
694
691
if (!MO.isReg ())
@@ -704,7 +701,7 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
704
701
Defs.push_back (Reg.asMCReg ());
705
702
continue ;
706
703
} else if (MO.readsReg ())
707
- ReadRegister (Reg.asMCReg (), * MI, MO.isDebug () ? DebugUse : RegularUse);
704
+ ReadRegister (Reg.asMCReg (), MI, MO.isDebug () ? DebugUse : RegularUse);
708
705
}
709
706
710
707
// The instruction has a register mask operand which means that it clobbers
0 commit comments