mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-02 21:17:17 +00:00
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:
@@ -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();
|
||||
|
Reference in New Issue
Block a user