Change the ActualCallees callgraph from hash_multimap<Instruction,Function>

to std::set<std::pair<Inst,Func>> to avoid duplicate entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21030 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2005-04-02 19:15:15 +00:00
parent 7332f3e05d
commit df968b8b37
2 changed files with 24 additions and 6 deletions

View File

@@ -39,7 +39,7 @@ namespace llvm {
/// ActualCallees - The actual functions callable from indirect call sites.
///
hash_multimap<Instruction*, Function*> ActualCallees;
std::set<std::pair<Instruction*, Function*> > ActualCallees;
// Equivalence class where functions that can potentially be called via the
// same function pointer are in the same class.
@@ -96,10 +96,19 @@ namespace llvm {
return *GlobalsGraph;
}
typedef hash_multimap<Instruction*, Function*> ActualCalleesTy;
typedef std::set<std::pair<Instruction*, Function*> > ActualCalleesTy;
const ActualCalleesTy &getActualCallees() const {
return ActualCallees;
}
ActualCalleesTy::iterator callee_begin(Instruction *I) const {
return ActualCallees.lower_bound(std::pair<Instruction*,Function*>(I, 0));
}
ActualCalleesTy::iterator callee_end(Instruction *I) const {
I = (Instruction*)((char*)I + 1);
return ActualCallees.lower_bound(std::pair<Instruction*,Function*>(I, 0));
}
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesAll();