]> granicus.if.org Git - llvm/commitdiff
Make widenable condition transparent for MemoryWriteTracking
authorMax Kazantsev <max.kazantsev@azul.com>
Thu, 14 Feb 2019 11:10:29 +0000 (11:10 +0000)
committerMax Kazantsev <max.kazantsev@azul.com>
Thu, 14 Feb 2019 11:10:29 +0000 (11:10 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354021 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/InstructionPrecedenceTracking.cpp

index 0afce7ebbd311862e2d026df9d9031558e2ca458..35190ce3e11a2f1fdde16426d15a6e766285256c 100644 (file)
@@ -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();
 }