summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-04-21 16:08:59 +0000
committerChris Lattner <sabre@nondot.org>2005-04-21 16:08:59 +0000
commit07753cecb986cbedf1fbc21fb8b6b98492896b2f (patch)
tree2fe5d1f7c8f6d7081cbe365456cfc9685142c415 /include
parent566f600779d8c28a81bb08951ec1962fe34322ab (diff)
downloadllvm-07753cecb986cbedf1fbc21fb8b6b98492896b2f.tar.gz
llvm-07753cecb986cbedf1fbc21fb8b6b98492896b2f.tar.bz2
llvm-07753cecb986cbedf1fbc21fb8b6b98492896b2f.tar.xz
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')
-rw-r--r--include/llvm/Analysis/DataStructure/DataStructure.h12
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; }