Generalize ScalarEvolution's cast-folding code to support more kinds
[oota-llvm.git] / include / llvm / Analysis / LoopDependenceAnalysis.h
index 0c3dadea75fcae03acac898892901910510ff3ff..67da2e7fbc1b1d3a9dbafba12125897f7de6945c 100644 (file)
 
 namespace llvm {
 
+  class AliasAnalysis;
   class AnalysisUsage;
   class ScalarEvolution;
+  class Value;
 
   class LoopDependenceAnalysis : public LoopPass {
     Loop *L;
+    AliasAnalysis *AA;
     ScalarEvolution *SE;
 
   public:
     static char ID; // Class identification, replacement for typeinfo
     LoopDependenceAnalysis() : LoopPass(&ID) {}
 
+    /// TODO: docs
+    bool isDependencePair(const Value*, const Value*) const;
+    bool depends(Value*, Value*);
+
     bool runOnLoop(Loop*, LPPassManager&);
 
     virtual void getAnalysisUsage(AnalysisUsage&) const;
 
     void print(raw_ostream&, const Module* = 0) const;
     virtual void print(std::ostream&, const Module* = 0) const;
-    void print(std::ostream *OS, const Module *M = 0) const {
-      if (OS) print(*OS, M);
-    }
   }; // class LoopDependenceAnalysis