summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp
diff options
context:
space:
mode:
authorMax Kazantsev <max.kazantsev@azul.com>2018-11-12 09:29:58 +0000
committerMax Kazantsev <max.kazantsev@azul.com>2018-11-12 09:29:58 +0000
commit7d49a3a81698a2a9508084b6cb9a8daf5d617252 (patch)
treec00a1eecc9e681c4e66ce52e000436118ed8d2ae /llvm/lib/Analysis/InstructionPrecedenceTracking.cpp
parentcedcc73d932f7092842e0c80e1321f6ae6b0ee63 (diff)
downloadbcm5719-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.cpp5
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();
+}
OpenPOWER on IntegriCloud