* Do not refer to ActualCallees in CBU, when we can do it locally.

* *DO NOT* print CBU graphs when asked to print our own.  This is just
  FREAKING confusing and misleading: it's better to not print anything.
* Simplify and clean up some code
* Add some more paranoia assertion checking code that I found to track
  down this bug:
* Fix a nasty bug that was causing us to crash on Prolangs-C++/objects,
  where we were missing processing some graphs.  This hunk is the bugfix:

-    if (!I->isExternal() && !FoldedGraphsMap.count(I))
+    if (!I->isExternal() && !ValMap.count(I))

  urg!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17386 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2004-10-31 23:41:26 +00:00
parent 4148266c9d
commit 31d3f671be
2 changed files with 47 additions and 30 deletions

View File

@ -52,6 +52,10 @@ namespace PA {
// FoldedGraphsMap, one graph for each function
hash_map<const Function*, DSGraph*> FoldedGraphsMap;
/// ActualCallees - The actual functions callable from indirect call sites.
///
hash_multimap<Instruction*, Function*> ActualCallees;
// Equivalence class where functions that can potentially be called via the
// same function pointer are in the same class.
@ -122,9 +126,9 @@ namespace PA {
return *GlobalsGraph;
}
typedef llvm::BUDataStructures::ActualCalleesTy ActualCalleesTy;
typedef hash_multimap<Instruction*, Function*> ActualCalleesTy;
const ActualCalleesTy &getActualCallees() const {
return CBU->getActualCallees();
return ActualCallees;
}
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@ -134,7 +138,7 @@ namespace PA {
/// print - Print out the analysis results...
///
void print(std::ostream &O, const Module *M) const { CBU->print(O, M); }
void print(std::ostream &O, const Module *M) const {}
private:
void buildIndirectFunctionSets(Module &M);