Integrate the readonly/readnone logic more deeply
into alias analysis.  This meant updating the API
which now has versions of the getModRefBehavior,
doesNotAccessMemory and onlyReadsMemory methods
which take a callsite parameter.  These should be
used unless the callsite is not known, since in
general they can do a better job than the versions
that take a function.  Also, users should no longer
call the version of getModRefBehavior that takes
both a function and a callsite.  To reduce the
chance of misuse it is now protected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44487 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/AliasAnalysisCounter.cpp b/lib/Analysis/AliasAnalysisCounter.cpp
index eea2c99..2fccff1 100644
--- a/lib/Analysis/AliasAnalysisCounter.cpp
+++ b/lib/Analysis/AliasAnalysisCounter.cpp
@@ -89,9 +89,15 @@
     bool pointsToConstantMemory(const Value *P) {
       return getAnalysis<AliasAnalysis>().pointsToConstantMemory(P);
     }
+    bool doesNotAccessMemory(CallSite CS) {
+      return getAnalysis<AliasAnalysis>().doesNotAccessMemory(CS);
+    }
     bool doesNotAccessMemory(Function *F) {
       return getAnalysis<AliasAnalysis>().doesNotAccessMemory(F);
     }
+    bool onlyReadsMemory(CallSite CS) {
+      return getAnalysis<AliasAnalysis>().onlyReadsMemory(CS);
+    }
     bool onlyReadsMemory(Function *F) {
       return getAnalysis<AliasAnalysis>().onlyReadsMemory(F);
     }