diff options
author | Igor Laevsky <igmyrj@gmail.com> | 2015-10-28 16:42:00 +0000 |
---|---|---|
committer | Igor Laevsky <igmyrj@gmail.com> | 2015-10-28 16:42:00 +0000 |
commit | 36e84c0fc73afbf0c0ec40bfc53c24a590715f3a (patch) | |
tree | 7e4d964c7e598bb3adfbc0de670099b232d61c5f /llvm/lib/Analysis/BasicAliasAnalysis.cpp | |
parent | 5d381bc775a6f3e088176670dbfae469126fdfbb (diff) | |
download | llvm-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.cpp | 3 |
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); } |