diff options
author | Andrew Kaylor <andrew.kaylor@intel.com> | 2016-11-08 21:07:42 +0000 |
---|---|---|
committer | Andrew Kaylor <andrew.kaylor@intel.com> | 2016-11-08 21:07:42 +0000 |
commit | 9604f3499666e1bfb1336c88159ac46b5212a8a5 (patch) | |
tree | 10e4b2071c6c9a46c8cf867b7bf720fc1bf49a84 /llvm/lib/Analysis/AliasAnalysis.cpp | |
parent | c53cbbb1d18bf1cb8c17efdb91436eeba8aad523 (diff) | |
download | bcm5719-llvm-9604f3499666e1bfb1336c88159ac46b5212a8a5.tar.gz bcm5719-llvm-9604f3499666e1bfb1336c88159ac46b5212a8a5.zip |
[BasicAA] Teach BasicAA to handle the inaccessiblememonly and inaccessiblemem_or_argmemonly attributes
Differential Revision: https://reviews.llvm.org/D26382
llvm-svn: 286294
Diffstat (limited to 'llvm/lib/Analysis/AliasAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/AliasAnalysis.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp index f931b6fc652..ae0180af5c0 100644 --- a/llvm/lib/Analysis/AliasAnalysis.cpp +++ b/llvm/lib/Analysis/AliasAnalysis.cpp @@ -141,7 +141,8 @@ ModRefInfo AAResults::getModRefInfo(ImmutableCallSite CS, // Try to refine the mod-ref info further using other API entry points to the // aggregate set of AA results. auto MRB = getModRefBehavior(CS); - if (MRB == FMRB_DoesNotAccessMemory) + if (MRB == FMRB_DoesNotAccessMemory || + MRB == FMRB_OnlyAccessesInaccessibleMem) return MRI_NoModRef; if (onlyReadsMemory(MRB)) @@ -149,7 +150,7 @@ ModRefInfo AAResults::getModRefInfo(ImmutableCallSite CS, else if (doesNotReadMemory(MRB)) Result = ModRefInfo(Result & MRI_Mod); - if (onlyAccessesArgPointees(MRB)) { + if (onlyAccessesArgPointees(MRB) || onlyAccessesInaccessibleOrArgMem(MRB)) { bool DoesAlias = false; ModRefInfo AllArgsMask = MRI_NoModRef; if (doesAccessArgPointees(MRB)) { |