@@ -899,24 +899,19 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
899
899
Tracker.clear ();
900
900
}
901
901
902
- static bool isBackwardPropagatableCopy (MachineInstr &MI ,
902
+ static bool isBackwardPropagatableCopy (const DestSourcePair &CopyOperands ,
903
903
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 ();
912
907
913
908
if (!Def || !Src)
914
909
return false ;
915
910
916
911
if (MRI.isReserved (Def) || MRI.isReserved (Src))
917
912
return false ;
918
913
919
- return CopyOperands-> Source ->isRenamable () && CopyOperands-> Source ->isKill ();
914
+ return CopyOperands. Source ->isRenamable () && CopyOperands. Source ->isKill ();
920
915
}
921
916
922
917
void MachineCopyPropagation::propagateDefs (MachineInstr &MI) {
@@ -991,14 +986,13 @@ void MachineCopyPropagation::BackwardCopyPropagateBlock(
991
986
Register SrcReg = CopyOperands->Source ->getReg ();
992
987
993
988
if (!TRI->regsOverlap (DefReg, SrcReg)) {
994
- MCRegister Def = DefReg.asMCReg ();
995
- MCRegister Src = SrcReg.asMCReg ();
996
-
997
989
// Unlike forward cp, we don't invoke propagateDefs here,
998
990
// 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);
1002
996
Tracker.trackCopy (&MI, *TRI, *TII, UseCopyInstr);
1003
997
continue ;
1004
998
}
0 commit comments