diff options
author | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2023-05-12 15:12:46 +0200 |
---|---|---|
committer | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2023-05-16 10:00:44 +0200 |
commit | 64599ac97eb1346dcc0e45b722c4a84c8c72e899 (patch) | |
tree | ffc1ee07da4104856c57be23bea4838500ac1dfd /llvm/lib/CodeGen/MachineSink.cpp | |
parent | a27fd12f92f81dbee039e1cccbd0b686b8b42da7 (diff) | |
download | llvm-64599ac97eb1346dcc0e45b722c4a84c8c72e899.zip llvm-64599ac97eb1346dcc0e45b722c4a84c8c72e899.tar.gz llvm-64599ac97eb1346dcc0e45b722c4a84c8c72e899.tar.bz2 |
[MachineSink] Don't reject sinking because of dead def in isProfitableToSinkTo().
An instruction should be sunk (if otherwise legal and profitable) regardless
of if it has a dead def of a physreg or not. Physreg defs are checked in other
places and sinking is only done with dead defs of regs that are not live into
the target MBB.
Differential Revision: https://reviews.llvm.org/D150447
Reviewed By: sebastian-ne, arsenm
Diffstat (limited to 'llvm/lib/CodeGen/MachineSink.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineSink.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/MachineSink.cpp b/llvm/lib/CodeGen/MachineSink.cpp index 5047503..1bd3705 100644 --- a/llvm/lib/CodeGen/MachineSink.cpp +++ b/llvm/lib/CodeGen/MachineSink.cpp @@ -806,12 +806,10 @@ bool MachineSinking::isProfitableToSinkTo(Register Reg, MachineInstr &MI, continue; if (Reg.isPhysical()) { - if (MO.isUse() && - (MRI->isConstantPhysReg(Reg) || TII->isIgnorableUse(MO))) - continue; - - // Don't handle non-constant and non-ignorable physical register. - return false; + // Don't handle non-constant and non-ignorable physical register uses. + if (MO.isUse() && !MRI->isConstantPhysReg(Reg) && !TII->isIgnorableUse(MO)) + return false; + continue; } // Users for the defs are all dominated by SuccToSinkTo. |