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 | bcm5719-llvm-36e84c0fc73afbf0c0ec40bfc53c24a590715f3a.tar.gz bcm5719-llvm-36e84c0fc73afbf0c0ec40bfc53c24a590715f3a.zip | |
[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 2e27f75441a..26578b83c8b 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); } |

