@@ -899,24 +899,19 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
899899 Tracker.clear ();
900900}
901901
902- static bool isBackwardPropagatableCopy (MachineInstr &MI ,
902+ static bool isBackwardPropagatableCopy (const DestSourcePair &CopyOperands ,
903903 const MachineRegisterInfo &MRI,
904- const TargetInstrInfo &TII,
905- bool UseCopyInstr) {
906- std::optional<DestSourcePair> CopyOperands =
907- isCopyInstr (MI, TII, UseCopyInstr);
908- assert (CopyOperands && " MI is expected to be a COPY" );
909-
910- Register Def = CopyOperands->Destination ->getReg ();
911- Register Src = CopyOperands->Source ->getReg ();
904+ const TargetInstrInfo &TII) {
905+ Register Def = CopyOperands.Destination ->getReg ();
906+ Register Src = CopyOperands.Source ->getReg ();
912907
913908 if (!Def || !Src)
914909 return false ;
915910
916911 if (MRI.isReserved (Def) || MRI.isReserved (Src))
917912 return false ;
918913
919- return CopyOperands-> Source ->isRenamable () && CopyOperands-> Source ->isKill ();
914+ return CopyOperands. Source ->isRenamable () && CopyOperands. Source ->isKill ();
920915}
921916
922917void MachineCopyPropagation::propagateDefs (MachineInstr &MI) {
@@ -991,14 +986,13 @@ void MachineCopyPropagation::BackwardCopyPropagateBlock(
991986 Register SrcReg = CopyOperands->Source ->getReg ();
992987
993988 if (!TRI->regsOverlap (DefReg, SrcReg)) {
994- MCRegister Def = DefReg.asMCReg ();
995- MCRegister Src = SrcReg.asMCReg ();
996-
997989 // Unlike forward cp, we don't invoke propagateDefs here,
998990 // just let forward cp do COPY-to-COPY propagation.
999- if (isBackwardPropagatableCopy (MI, *MRI, *TII, UseCopyInstr)) {
1000- Tracker.invalidateRegister (Src, *TRI, *TII, UseCopyInstr);
1001- Tracker.invalidateRegister (Def, *TRI, *TII, UseCopyInstr);
991+ if (isBackwardPropagatableCopy (*CopyOperands, *MRI, *TII)) {
992+ Tracker.invalidateRegister (SrcReg.asMCReg (), *TRI, *TII,
993+ UseCopyInstr);
994+ Tracker.invalidateRegister (DefReg.asMCReg (), *TRI, *TII,
995+ UseCopyInstr);
1002996 Tracker.trackCopy (&MI, *TRI, *TII, UseCopyInstr);
1003997 continue ;
1004998 }
0 commit comments