[llvm-commits] [llvm] r52029 - in /llvm/trunk: include/llvm/Analysis/LibCallAliasAnalysis.h lib/Analysis/LibCallAliasAnalysis.cpp

Chris Lattner sabre at nondot.org
Thu Jun 5 16:45:18 PDT 2008


Author: lattner
Date: Thu Jun  5 18:45:18 2008
New Revision: 52029

URL: http://llvm.org/viewvc/llvm-project?rev=52029&view=rev
Log:
Expose a public interface to this pass.

Added:
    llvm/trunk/include/llvm/Analysis/LibCallAliasAnalysis.h
Modified:
    llvm/trunk/lib/Analysis/LibCallAliasAnalysis.cpp

Added: llvm/trunk/include/llvm/Analysis/LibCallAliasAnalysis.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LibCallAliasAnalysis.h?rev=52029&view=auto

==============================================================================
--- llvm/trunk/include/llvm/Analysis/LibCallAliasAnalysis.h (added)
+++ llvm/trunk/include/llvm/Analysis/LibCallAliasAnalysis.h Thu Jun  5 18:45:18 2008
@@ -0,0 +1,61 @@
+//===- LibCallAliasAnalysis.h - Implement AliasAnalysis for libcalls ------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the LibCallAliasAnalysis class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ANALYSIS_LIBCALL_AA_H
+#define LLVM_ANALYSIS_LIBCALL_AA_H
+
+#include "llvm/Analysis/AliasAnalysis.h"
+#include "llvm/Pass.h"
+
+namespace llvm {
+  class LibCallInfo;
+  class LibCallFunctionInfo;
+  
+  /// LibCallAliasAnalysis - Alias analysis driven from LibCallInfo.
+  struct LibCallAliasAnalysis : public FunctionPass, AliasAnalysis {
+    static char ID; // Class identification
+    
+    LibCallInfo *LCI;
+    
+    explicit LibCallAliasAnalysis(LibCallInfo *LC = 0)
+      : FunctionPass(&ID), LCI(LC) {
+    }
+    explicit LibCallAliasAnalysis(const void *ID, LibCallInfo *LC)
+      : FunctionPass(ID), LCI(LC) {
+    }
+    ~LibCallAliasAnalysis();
+    
+    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;
+    
+    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 llvm namespace
+
+#endif

Modified: llvm/trunk/lib/Analysis/LibCallAliasAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LibCallAliasAnalysis.cpp?rev=52029&r1=52028&r2=52029&view=diff

==============================================================================
--- llvm/trunk/lib/Analysis/LibCallAliasAnalysis.cpp (original)
+++ llvm/trunk/lib/Analysis/LibCallAliasAnalysis.cpp Thu Jun  5 18:45:18 2008
@@ -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 @@
   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





More information about the llvm-commits mailing list