diff options
author | Petar Avramovic <Petar.Avramovic@amd.com> | 2023-09-21 13:02:43 +0200 |
---|---|---|
committer | Petar Avramovic <Petar.Avramovic@amd.com> | 2023-10-06 15:00:08 +0200 |
commit | ccf68ab4322962981f71114567c19f7d692f9e06 (patch) | |
tree | a7629231e58c3be722933ff53f030f76cd564e92 /llvm/lib/CodeGen/MachineSink.cpp | |
parent | b3b3336e82763d8c216c1dacf4d7c60c8513db0d (diff) | |
download | llvm-ccf68ab4322962981f71114567c19f7d692f9e06.zip llvm-ccf68ab4322962981f71114567c19f7d692f9e06.tar.gz llvm-ccf68ab4322962981f71114567c19f7d692f9e06.tar.bz2 |
Revert "MachineSink: Fix sinking VGPR def out of a divergent loop"
This reverts commit 3f8ef57bede94445b1a1042c987cc914a886e7ff.
Diffstat (limited to 'llvm/lib/CodeGen/MachineSink.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineSink.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/llvm/lib/CodeGen/MachineSink.cpp b/llvm/lib/CodeGen/MachineSink.cpp index 073c9a0..14de333 100644 --- a/llvm/lib/CodeGen/MachineSink.cpp +++ b/llvm/lib/CodeGen/MachineSink.cpp @@ -300,7 +300,8 @@ static bool blockPrologueInterferes(const MachineBasicBlock *BB, if (!Reg) continue; if (MO.isUse()) { - if (Reg.isPhysical() && MRI && MRI->isConstantPhysReg(Reg)) + if (Reg.isPhysical() && + (TII->isIgnorableUse(MO) || (MRI && MRI->isConstantPhysReg(Reg)))) continue; if (PI->modifiesRegister(Reg, TRI)) return true; @@ -1250,24 +1251,16 @@ MachineSinking::FindSuccToSinkTo(MachineInstr &MI, MachineBasicBlock *MBB, if (MBB == SuccToSinkTo) return nullptr; - if (!SuccToSinkTo) - return nullptr; - // It's not safe to sink instructions to EH landing pad. Control flow into // landing pad is implicitly defined. - if (SuccToSinkTo->isEHPad()) + if (SuccToSinkTo && SuccToSinkTo->isEHPad()) return nullptr; // It ought to be okay to sink instructions into an INLINEASM_BR target, but // only if we make sure that MI occurs _before_ an INLINEASM_BR instruction in // the source block (which this code does not yet do). So for now, forbid // doing so. - if (SuccToSinkTo->isInlineAsmBrIndirectTarget()) - return nullptr; - - MachineBasicBlock::const_iterator InsertPos = - SuccToSinkTo->SkipPHIsAndLabels(SuccToSinkTo->begin()); - if (blockPrologueInterferes(SuccToSinkTo, InsertPos, MI, TRI, TII, MRI)) + if (SuccToSinkTo && SuccToSinkTo->isInlineAsmBrIndirectTarget()) return nullptr; return SuccToSinkTo; |