diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2016-10-26 12:42:11 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2016-10-26 12:42:11 +0000 |
commit | 1408628ffa73b55ade613c22932dd6b15e072559 (patch) | |
tree | 73c3c42cec2d29235a177889dfedaa06b3e6bb26 /llvm/lib/Analysis/AliasSetTracker.cpp | |
parent | 1854a8ebb83954c9969ac49cc2ababfdd0223520 (diff) | |
download | bcm5719-llvm-1408628ffa73b55ade613c22932dd6b15e072559.tar.gz bcm5719-llvm-1408628ffa73b55ade613c22932dd6b15e072559.zip |
[AliasSetTracker] Make AST smarter about intrinsics that don't actually affect memory.
Differential Revision: https://reviews.llvm.org/D25969
llvm-svn: 285191
Diffstat (limited to 'llvm/lib/Analysis/AliasSetTracker.cpp')
-rw-r--r-- | llvm/lib/Analysis/AliasSetTracker.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
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<DbgInfoIntrinsic>(Inst)) return; // Ignore DbgInfo Intrinsics. + + if (auto *II = dyn_cast<IntrinsicInst>(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 |