Implement Simple Analysis interfaces - cloneBasicBlockAnalysis and deleteAnalysisValue.
authorDevang Patel <dpatel@apple.com>
Tue, 31 Jul 2007 08:01:41 +0000 (08:01 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 31 Jul 2007 08:01:41 +0000 (08:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40626 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LICM.cpp

index a4aa12ababd11ec2eb66734001dfdc85e04a6077..669afa33ac9463f33672ebb04c8f4fa7727b86ec 100644 (file)
@@ -102,6 +102,13 @@ namespace {
     AliasSetTracker *CurAST; // AliasSet information for the current loop...
     std::map<Loop *, AliasSetTracker *> LoopToAliasMap;
 
+    /// cloneBasicBlockAnalysis - Simple Analysis hook. Clone alias set info.
+    void cloneBasicBlockAnalysis(BasicBlock *From, BasicBlock *To, Loop *L);
+
+    /// deleteAnalysisValue - Simple Analysis hook. Delete value V from alias
+    /// set.
+    void deleteAnalysisValue(Value *V, Loop *L);
+
     /// SinkRegion - Walk the specified region of the CFG (defined by all blocks
     /// dominated by the specified block, and that are in the current loop) in
     /// reverse depth first order w.r.t the DominatorTree.  This allows us to
@@ -798,3 +805,22 @@ void LICM::FindPromotableValuesInLoop(
     }
   }
 }
+
+/// cloneBasicBlockAnalysis - Simple Analysis hook. Clone alias set info.
+void LICM::cloneBasicBlockAnalysis(BasicBlock *From, BasicBlock *To, Loop *L) {
+  AliasSetTracker *AST = LoopToAliasMap[L];
+  if (!AST)
+    return;
+
+  AST->copyValue(From, To);
+}
+
+/// deleteAnalysisValue - Simple Analysis hook. Delete value V from alias
+/// set.
+void LICM::deleteAnalysisValue(Value *V, Loop *L) {
+  AliasSetTracker *AST = LoopToAliasMap[L];
+  if (!AST)
+    return;
+
+  AST->deleteValue(V);
+}