diff options
author | Max Kazantsev <max.kazantsev@azul.com> | 2018-11-12 09:29:58 +0000 |
---|---|---|
committer | Max Kazantsev <max.kazantsev@azul.com> | 2018-11-12 09:29:58 +0000 |
commit | 7d49a3a81698a2a9508084b6cb9a8daf5d617252 (patch) | |
tree | c00a1eecc9e681c4e66ce52e000436118ed8d2ae /llvm/lib/Analysis/InstructionPrecedenceTracking.cpp | |
parent | cedcc73d932f7092842e0c80e1321f6ae6b0ee63 (diff) | |
download | bcm5719-llvm-7d49a3a81698a2a9508084b6cb9a8daf5d617252.tar.gz bcm5719-llvm-7d49a3a81698a2a9508084b6cb9a8daf5d617252.zip |
[LICM] Hoist guards from non-header blocks
This patch relaxes overconservative checks on whether or not we could write
memory before we execute an instruction. This allows us to hoist guards out of
loops even if they are not in the header block.
Differential Revision: https://reviews.llvm.org/D50891
Reviewed By: fedor.sergeev
llvm-svn: 346643
Diffstat (limited to 'llvm/lib/Analysis/InstructionPrecedenceTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/InstructionPrecedenceTracking.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp b/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp index c667c282281..b98975b006a 100644 --- a/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp +++ b/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp @@ -142,3 +142,8 @@ bool ImplicitControlFlowTracking::isSpecialInstruction( } return true; } + +bool MemoryWriteTracking::isSpecialInstruction( + const Instruction *Insn) const { + return Insn->mayWriteToMemory(); +} |