From 6f9474c1e124036ac71e36ce5626c04c1625ae21 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Mon, 1 Jun 2015 17:26:30 +0000 Subject: [PATCH] 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 --- lib/CodeGen/MachineSink.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/CodeGen/MachineSink.cpp b/lib/CodeGen/MachineSink.cpp index 5f03390f146..aed0e500d44 100644 --- a/lib/CodeGen/MachineSink.cpp +++ b/lib/CodeGen/MachineSink.cpp @@ -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 -- 2.34.1