[llvm] [AArch64] Only clear kill flags if necessary when merging str (PR #69680)
Zhaoxuan Jiang via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 24 01:36:58 PDT 2023
================
@@ -997,8 +997,17 @@ AArch64LoadStoreOpt::mergePairedInsns(MachineBasicBlock::iterator I,
// STRWui %w0, ...
// USE %w1
// STRWui kill %w1 ; need to clear kill flag when moving STRWui upwards
- RegOp0.setIsKill(false);
- RegOp1.setIsKill(false);
+ for (auto It = std::next(I);
+ It != Paired && (RegOp0.isKill() || RegOp1.isKill()); ++It) {
+ auto ClearKill = [](MachineInstr &MI, MachineOperand &MOP,
+ const TargetRegisterInfo *TRI) {
+ Register Reg = MOP.getReg();
+ if (MI.readsRegister(Reg, TRI) || MI.modifiesRegister(Reg, TRI))
----------------
nocchijiang wrote:
Good point. I pushed a new commit to remove the `modifiesRegister` check.
https://github.com/llvm/llvm-project/pull/69680
More information about the llvm-commits
mailing list