forked from OSchip/llvm-project
Deinline some virtual methods, provide better mod/ref answers through the
use of the boolean queries llvm-svn: 12410
This commit is contained in:
parent
d441444234
commit
a67dbd02cf
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue