diff options
| author | Chris Lattner <sabre@nondot.org> | 2008-06-05 23:45:18 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2008-06-05 23:45:18 +0000 | 
| commit | 3816aa7ef7265642b95d15c9537568dc7d7c8f91 (patch) | |
| tree | 11a592a1f4cafbe656dc2d59f184bc202a26e679 /llvm/lib/Analysis | |
| parent | 0282d0247e99a4ee3b855d78dfe2a6ceda9db83e (diff) | |
| download | bcm5719-llvm-3816aa7ef7265642b95d15c9537568dc7d7c8f91.tar.gz bcm5719-llvm-3816aa7ef7265642b95d15c9537568dc7d7c8f91.zip | |
Expose a public interface to this pass.
llvm-svn: 52029
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/LibCallAliasAnalysis.cpp | 52 | 
1 files changed, 12 insertions, 40 deletions
| diff --git a/llvm/lib/Analysis/LibCallAliasAnalysis.cpp b/llvm/lib/Analysis/LibCallAliasAnalysis.cpp index afc60ddb84a..971e6e7accb 100644 --- a/llvm/lib/Analysis/LibCallAliasAnalysis.cpp +++ b/llvm/lib/Analysis/LibCallAliasAnalysis.cpp @@ -11,52 +11,13 @@  //  //===----------------------------------------------------------------------===// +#include "llvm/Analysis/LibCallAliasAnalysis.h"  #include "llvm/Analysis/Passes.h"  #include "llvm/Analysis/LibCallSemantics.h"  #include "llvm/Function.h"  #include "llvm/Pass.h"  #include "llvm/Target/TargetData.h"  using namespace llvm; - -namespace { -  /// LibCallAliasAnalysis - Alias analysis driven from LibCallInfo. -  struct LibCallAliasAnalysis : public FunctionPass, AliasAnalysis { -    static char ID; // Class identification -     -    LibCallInfo *LCI; -     -    explicit LibCallAliasAnalysis(LibCallInfo *LC = 0) -      : FunctionPass((intptr_t)&ID), LCI(LC) { -    } -    ~LibCallAliasAnalysis() { -      delete LCI; -    } -     -    ModRefResult getModRefInfo(CallSite CS, Value *P, unsigned Size); -    ModRefResult getModRefInfo(CallSite CS1, CallSite CS2) { -      // TODO: Could compare two direct calls against each other if we cared to. -      return AliasAnalysis::getModRefInfo(CS1,CS2); -    } -     -    virtual void getAnalysisUsage(AnalysisUsage &AU) const { -      AliasAnalysis::getAnalysisUsage(AU); -      AU.addRequired<TargetData>(); -      AU.setPreservesAll();                         // Does not transform code -    } -     -    virtual bool runOnFunction(Function &F) { -      InitializeAliasAnalysis(this);                 // set up super class -      return false; -    } -     -    /// hasNoModRefInfoForCalls - We can provide mod/ref information against -    /// non-escaping allocations. -    virtual bool hasNoModRefInfoForCalls() const { return false; } -  private: -    ModRefResult AnalyzeLibCallDetails(const LibCallFunctionInfo *FI, -                                       CallSite CS, Value *P, unsigned Size); -  }; -}  // End of anonymous namespace  // Register this pass...  char LibCallAliasAnalysis::ID = 0; @@ -70,6 +31,17 @@ FunctionPass *llvm::createLibCallAliasAnalysisPass(LibCallInfo *LCI) {    return new LibCallAliasAnalysis(LCI);  } +LibCallAliasAnalysis::~LibCallAliasAnalysis() { +  delete LCI; +} + +void LibCallAliasAnalysis::getAnalysisUsage(AnalysisUsage &AU) const { +  AliasAnalysis::getAnalysisUsage(AU); +  AU.addRequired<TargetData>(); +  AU.setPreservesAll();                         // Does not transform code +} + +  /// AnalyzeLibCallDetails - Given a call to a function with the specified  /// LibCallFunctionInfo, see if we can improve the mod/ref footprint of the call | 

