From 1408628ffa73b55ade613c22932dd6b15e072559 Mon Sep 17 00:00:00 2001 From: Chad Rosier Date: Wed, 26 Oct 2016 12:42:11 +0000 Subject: [AliasSetTracker] Make AST smarter about intrinsics that don't actually affect memory. Differential Revision: https://reviews.llvm.org/D25969 llvm-svn: 285191 --- llvm/lib/Analysis/AliasSetTracker.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'llvm/lib/Analysis/AliasSetTracker.cpp') diff --git a/llvm/lib/Analysis/AliasSetTracker.cpp b/llvm/lib/Analysis/AliasSetTracker.cpp index 954b22037ed..0a947e175d4 100644 --- a/llvm/lib/Analysis/AliasSetTracker.cpp +++ b/llvm/lib/Analysis/AliasSetTracker.cpp @@ -413,6 +413,21 @@ void AliasSetTracker::add(MemTransferInst *MTI) { void AliasSetTracker::addUnknown(Instruction *Inst) { if (isa(Inst)) return; // Ignore DbgInfo Intrinsics. + + if (auto *II = dyn_cast(Inst)) { + // These intrinsics will show up as affecting memory, but they are just + // markers. + switch (II->getIntrinsicID()) { + default: + break; + case Intrinsic::lifetime_start: + case Intrinsic::lifetime_end: + case Intrinsic::invariant_start: + case Intrinsic::invariant_end: + case Intrinsic::assume: + return; + } + } if (!Inst->mayReadOrWriteMemory()) return; // doesn't alias anything -- cgit v1.2.3