Disable MachineSink on convergent operations, similar to how IR Sink is

restricted.  No test because no in-tree target currently has convergent
MachineInstr's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238763 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson 2015-06-01 17:26:30 +00:00
parent 57e487e92c
commit 6f9474c1e1

View File

@ -655,6 +655,10 @@ bool MachineSinking::SinkInstruction(MachineInstr *MI, bool &SawStore) {
if (!MI->isSafeToMove(AA, SawStore))
return false;
// Convergent operations may only be moved to control equivalent locations.
if (MI->isConvergent())
return false;
// FIXME: This should include support for sinking instructions within the
// block they are currently in to shorten the live ranges. We often get
// instructions sunk into the top of a large block, but it would be better to