diff options
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/MachineLICM.cpp | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/lib/CodeGen/MachineLICM.cpp b/lib/CodeGen/MachineLICM.cpp index bd25b2c6b6..d310f252e2 100644 --- a/lib/CodeGen/MachineLICM.cpp +++ b/lib/CodeGen/MachineLICM.cpp @@ -168,11 +168,6 @@ namespace { /// bool IsLoopInvariantInst(MachineInstr &I); - /// IsGuaranteedToExecute - check to make sure that the MI dominates - /// all of the exit blocks. If it doesn't, then there is a path out of the - /// loop which does not execute this instruction, so we can't hoist it. - bool IsGuaranteedToExecute(MachineInstr *MI); - /// HasAnyPHIUse - Return true if the specified register is used by any /// phi node. bool HasAnyPHIUse(unsigned Reg) const; @@ -1134,28 +1129,6 @@ bool MachineLICM::EliminateCSE(MachineInstr *MI, return false; } -/// IsGuaranteedToExecute - check to make sure that the instruction dominates -/// all of the exit blocks. If it doesn't, then there is a path out of the loop -/// which does not execute this instruction, so we can't hoist it. -bool MachineLICM::IsGuaranteedToExecute(MachineInstr *MI) { - // If the instruction is in the header block for the loop (which is very - // common), it is always guaranteed to dominate the exit blocks. Since this - // is a common case, and can save some work, check it now. - if (MI->getParent() == CurLoop->getHeader()) - return true; - - // Get the exit blocks for the current loop. - SmallVector<MachineBasicBlock*, 8> ExitingBlocks; - CurLoop->getExitingBlocks(ExitingBlocks); - - // Verify that the block dominates each of the exit blocks of the loop. - for (unsigned i = 0, e = ExitingBlocks.size(); i != e; ++i) - if (!DT->dominates(MI->getParent(), ExitingBlocks[i])) - return false; - - return true; -} - /// Hoist - When an instruction is found to use only loop invariant operands /// that are safe to hoist, this instruction is called to do the dirty work. /// @@ -1166,8 +1139,6 @@ bool MachineLICM::Hoist(MachineInstr *MI, MachineBasicBlock *Preheader) { MI = ExtractHoistableLoad(MI); if (!MI) return false; } - if (!IsGuaranteedToExecute(MI)) - return false; // Now move the instructions to the predecessor, inserting it before any // terminator instructions. |