[llvm-commits] CVS: llvm/include/llvm/Analysis/DataStructure/DataStructure.h

Chris Lattner lattner at cs.uiuc.edu
Thu Apr 21 09:09:16 PDT 2005



Changes in directory llvm/include/llvm/Analysis/DataStructure:

DataStructure.h updated: 1.92 -> 1.93
---
Log message:

add support for taking the address of free.


---
Diffs of the changes:  (+8 -4)

 DataStructure.h |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)


Index: llvm/include/llvm/Analysis/DataStructure/DataStructure.h
diff -u llvm/include/llvm/Analysis/DataStructure/DataStructure.h:1.92 llvm/include/llvm/Analysis/DataStructure/DataStructure.h:1.93
--- llvm/include/llvm/Analysis/DataStructure/DataStructure.h:1.92	Sat Apr  2 14:08:06 2005
+++ llvm/include/llvm/Analysis/DataStructure/DataStructure.h	Thu Apr 21 11:08:59 2005
@@ -126,14 +126,17 @@
   DSGraph &getDSGraph(const Function &F) const {
     hash_map<Function*, DSGraph*>::const_iterator I =
       DSInfo.find(const_cast<Function*>(&F));
-    assert(I != DSInfo.end() && "Function not in module!");
-    return *I->second;
+    if (I != DSInfo.end())
+      return *I->second;
+    return const_cast<BUDataStructures*>(this)->
+                   CreateGraphForExternalFunction(F);
   }
 
   DSGraph &getGlobalsGraph() const { return *GlobalsGraph; }
 
   EquivalenceClasses<GlobalValue*> &getGlobalECs() { return GlobalECs; }
 
+  DSGraph &CreateGraphForExternalFunction(const Function &F);
 
   /// deleteValue/copyValue - Interfaces to update the DSGraphs in the program.
   /// These correspond to the interfaces defined in the AliasAnalysis class.
@@ -234,8 +237,9 @@
   DSGraph &getDSGraph(const Function &F) const {
     hash_map<Function*, DSGraph*>::const_iterator I =
       DSInfo.find(const_cast<Function*>(&F));
-    assert(I != DSInfo.end() && "Function not in module!");
-    return *I->second;
+    if (I != DSInfo.end()) return *I->second;
+    return const_cast<TDDataStructures*>(this)->
+        getOrCreateDSGraph(const_cast<Function&>(F));
   }
 
   DSGraph &getGlobalsGraph() const { return *GlobalsGraph; }






More information about the llvm-commits mailing list