diff options
| author | Chris Lattner <sabre@nondot.org> | 2004-03-15 04:07:29 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2004-03-15 04:07:29 +0000 |
| commit | a67dbd02cf202b9a93a152836c39500e3fa2a84d (patch) | |
| tree | 9778e2f1c121b31e4d30ff651197b07091166343 | |
| parent | d441444234f99a58a0efdc026be76a0b0c1ff333 (diff) | |
| download | bcm5719-llvm-a67dbd02cf202b9a93a152836c39500e3fa2a84d.tar.gz bcm5719-llvm-a67dbd02cf202b9a93a152836c39500e3fa2a84d.zip | |
Deinline some virtual methods, provide better mod/ref answers through the
use of the boolean queries
llvm-svn: 12410
| -rw-r--r-- | llvm/lib/Analysis/AliasAnalysis.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp index 373524b6c15..a2b852bf494 100644 --- a/llvm/lib/Analysis/AliasAnalysis.cpp +++ b/llvm/lib/Analysis/AliasAnalysis.cpp @@ -28,8 +28,7 @@ #include "llvm/BasicBlock.h" #include "llvm/iMemory.h" #include "llvm/Target/TargetData.h" - -namespace llvm { +using namespace llvm; // Register the AliasAnalysis interface, providing a nice name to refer to. namespace { @@ -55,6 +54,25 @@ AliasAnalysis::getModRefInfo(StoreInst *S, Value *P, unsigned Size) { return pointsToConstantMemory(P) ? NoModRef : Mod; } +AliasAnalysis::ModRefResult +AliasAnalysis::getModRefInfo(CallSite CS, Value *P, unsigned Size) { + if (Function *F = CS.getCalledFunction()) + if (onlyReadsMemory(F)) { + if (doesNotAccessMemory(F)) return NoModRef; + return Ref; + } + + // If P points to a constant memory location, the call definitely could not + // modify the memory location. + return pointsToConstantMemory(P) ? Ref : ModRef; +} + +AliasAnalysis::ModRefResult +AliasAnalysis::getModRefInfo(CallSite CS1, CallSite CS2) { + // FIXME: could probably do better. + return ModRef; +} + // AliasAnalysis destructor: DO NOT move this to the header file for // AliasAnalysis or else clients of the AliasAnalysis class may not depend on @@ -110,7 +128,7 @@ bool AliasAnalysis::canInstructionRangeModify(const Instruction &I1, // the risk of AliasAnalysis being used, but the default implementation not // being linked into the tool that uses it. // -extern void BasicAAStub(); +extern void llvm::BasicAAStub(); static IncludeFile INCLUDE_BASICAA_CPP((void*)&BasicAAStub); @@ -132,5 +150,3 @@ namespace { // Declare that we implement the AliasAnalysis interface RegisterAnalysisGroup<AliasAnalysis, NoAA> Y; } // End of anonymous namespace - -} // End llvm namespace |

