From: Chris Lattner Date: Mon, 15 Mar 2004 04:07:29 +0000 (+0000) Subject: Deinline some virtual methods, provide better mod/ref answers through the X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=992860c44ed8d8b82c6b7fde6645123772965c65;p=oota-llvm.git Deinline some virtual methods, provide better mod/ref answers through the use of the boolean queries git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12410 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/AliasAnalysis.cpp b/lib/Analysis/AliasAnalysis.cpp index 373524b6c15..a2b852bf494 100644 --- a/lib/Analysis/AliasAnalysis.cpp +++ b/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 Y; } // End of anonymous namespace - -} // End llvm namespace