diff options
author | Max Kazantsev <max.kazantsev@azul.com> | 2019-02-14 11:10:29 +0000 |
---|---|---|
committer | Max Kazantsev <max.kazantsev@azul.com> | 2019-02-14 11:10:29 +0000 |
commit | 24383cd7bbe2716a1805cdbab908ff592a811cd7 (patch) | |
tree | 1a7e51af7731f95049172891e50822ab988376c6 | |
parent | b3168a400f2fdc4946ae7ca03c8a48b94e57e569 (diff) | |
download | bcm5719-llvm-24383cd7bbe2716a1805cdbab908ff592a811cd7.tar.gz bcm5719-llvm-24383cd7bbe2716a1805cdbab908ff592a811cd7.zip |
Make widenable condition transparent for MemoryWriteTracking
Side effects of widenable condition intrinsic are modelled via
InaccessibleMemOnly, and there is no way to say that it isn't
really writing any memory. This patch teaches MemoryWriteTracking
ignore this intrinsic.
llvm-svn: 354021
-rw-r--r-- | llvm/lib/Analysis/InstructionPrecedenceTracking.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp b/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp index 0afce7ebbd3..35190ce3e11 100644 --- a/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp +++ b/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp @@ -19,6 +19,7 @@ #include "llvm/Analysis/InstructionPrecedenceTracking.h" #include "llvm/Analysis/ValueTracking.h" +#include "llvm/IR/PatternMatch.h" using namespace llvm; @@ -152,5 +153,8 @@ bool ImplicitControlFlowTracking::isSpecialInstruction( bool MemoryWriteTracking::isSpecialInstruction( const Instruction *Insn) const { + using namespace PatternMatch; + if (match(Insn, m_Intrinsic<Intrinsic::experimental_widenable_condition>())) + return false; return Insn->mayWriteToMemory(); } |