aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
diff options
context:
space:
mode:
authorIgor Laevsky <igmyrj@gmail.com>2015-10-28 16:42:00 +0000
committerIgor Laevsky <igmyrj@gmail.com>2015-10-28 16:42:00 +0000
commit36e84c0fc73afbf0c0ec40bfc53c24a590715f3a (patch)
tree7e4d964c7e598bb3adfbc0de670099b232d61c5f /llvm/lib/Analysis/BasicAliasAnalysis.cpp
parent5d381bc775a6f3e088176670dbfae469126fdfbb (diff)
downloadllvm-36e84c0fc73afbf0c0ec40bfc53c24a590715f3a.zip
llvm-36e84c0fc73afbf0c0ec40bfc53c24a590715f3a.tar.gz
llvm-36e84c0fc73afbf0c0ec40bfc53c24a590715f3a.tar.bz2
[AliasAnalysis] Take into account readonly attribute for the function arguments
In getArgModRefInfo we consider all arguments as having MRI_ModRef. However for arguments marked with readonly attribute we can return more precise answer - MRI_Ref. Differential Revision: http://reviews.llvm.org/D13992 llvm-svn: 251525
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 2e27f75..26578b8 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -616,6 +616,9 @@ ModRefInfo BasicAAResult::getArgModRefInfo(ImmutableCallSite CS,
}
// FIXME: Handle memset_pattern4 and memset_pattern8 also.
+ if (CS.paramHasAttr(ArgIdx + 1, Attribute::ReadOnly))
+ return MRI_Ref;
+
return AAResultBase::getArgModRefInfo(CS, ArgIdx);
}