diff options
author | Chris Lattner <sabre@nondot.org> | 2005-04-21 16:08:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-04-21 16:08:59 +0000 |
commit | 07753cecb986cbedf1fbc21fb8b6b98492896b2f (patch) | |
tree | 2fe5d1f7c8f6d7081cbe365456cfc9685142c415 /include/llvm/Analysis/DataStructure/DataStructure.h | |
parent | 566f600779d8c28a81bb08951ec1962fe34322ab (diff) |
add support for taking the address of free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21395 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/DataStructure/DataStructure.h')
-rw-r--r-- | include/llvm/Analysis/DataStructure/DataStructure.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/include/llvm/Analysis/DataStructure/DataStructure.h b/include/llvm/Analysis/DataStructure/DataStructure.h index a05935ac21..32299473f4 100644 --- a/include/llvm/Analysis/DataStructure/DataStructure.h +++ b/include/llvm/Analysis/DataStructure/DataStructure.h @@ -126,14 +126,17 @@ public: 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 @@ public: 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; } |