mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Each DS collection now contains an equivalence class of globals values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20694 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ce325fdb87
commit
ed53fe9945
@ -18,11 +18,13 @@
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/ADT/hash_map"
|
||||
#include "llvm/ADT/hash_set"
|
||||
#include "llvm/ADT/EquivalenceClasses.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class Type;
|
||||
class Instruction;
|
||||
class GlobalValue;
|
||||
class DSGraph;
|
||||
class DSNode;
|
||||
class DSNodeHandle;
|
||||
@ -46,6 +48,10 @@ class LocalDataStructures : public ModulePass {
|
||||
// DSInfo, one graph for each function
|
||||
hash_map<Function*, DSGraph*> DSInfo;
|
||||
DSGraph *GlobalsGraph;
|
||||
|
||||
/// GlobalECs - The equivalence classes for each global value that is merged
|
||||
/// with other global values in the DSGraphs.
|
||||
EquivalenceClasses<GlobalValue*> GlobalECs;
|
||||
public:
|
||||
~LocalDataStructures() { releaseMemory(); }
|
||||
|
||||
@ -66,6 +72,8 @@ public:
|
||||
|
||||
DSGraph &getGlobalsGraph() const { return *GlobalsGraph; }
|
||||
|
||||
EquivalenceClasses<GlobalValue*> &getGlobalECs() { return GlobalECs; }
|
||||
|
||||
/// print - Print out the analysis results...
|
||||
///
|
||||
void print(std::ostream &O, const Module *M) const;
|
||||
@ -98,6 +106,10 @@ protected:
|
||||
// This map is only maintained during construction of BU Graphs
|
||||
std::map<std::vector<Function*>,
|
||||
std::pair<DSGraph*, std::vector<DSNodeHandle> > > *IndCallGraphMap;
|
||||
|
||||
/// GlobalECs - The equivalence classes for each global value that is merged
|
||||
/// with other global values in the DSGraphs.
|
||||
EquivalenceClasses<GlobalValue*> GlobalECs;
|
||||
public:
|
||||
~BUDataStructures() { releaseMemory(); }
|
||||
|
||||
@ -118,6 +130,9 @@ public:
|
||||
|
||||
DSGraph &getGlobalsGraph() const { return *GlobalsGraph; }
|
||||
|
||||
EquivalenceClasses<GlobalValue*> &getGlobalECs() { return GlobalECs; }
|
||||
|
||||
|
||||
/// deleteValue/copyValue - Interfaces to update the DSGraphs in the program.
|
||||
/// These correspond to the interfaces defined in the AliasAnalysis class.
|
||||
void deleteValue(Value *V);
|
||||
@ -162,6 +177,10 @@ class TDDataStructures : public ModulePass {
|
||||
hash_map<Function*, DSGraph*> DSInfo;
|
||||
hash_set<Function*> ArgsRemainIncomplete;
|
||||
DSGraph *GlobalsGraph;
|
||||
|
||||
/// GlobalECs - The equivalence classes for each global value that is merged
|
||||
/// with other global values in the DSGraphs.
|
||||
EquivalenceClasses<GlobalValue*> GlobalECs;
|
||||
public:
|
||||
~TDDataStructures() { releaseMyMemory(); }
|
||||
|
||||
@ -181,6 +200,8 @@ public:
|
||||
}
|
||||
|
||||
DSGraph &getGlobalsGraph() const { return *GlobalsGraph; }
|
||||
EquivalenceClasses<GlobalValue*> &getGlobalECs() { return GlobalECs; }
|
||||
|
||||
|
||||
/// deleteValue/copyValue - Interfaces to update the DSGraphs in the program.
|
||||
/// These correspond to the interfaces defined in the AliasAnalysis class.
|
||||
|
@ -16,9 +16,7 @@
|
||||
|
||||
#include "llvm/Analysis/DataStructure/DataStructure.h"
|
||||
#include "llvm/Analysis/DataStructure/DSGraph.h"
|
||||
#include "llvm/ADT/EquivalenceClasses.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/hash_map"
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
@ -52,6 +50,10 @@ namespace llvm {
|
||||
/// a call site.
|
||||
std::map<DSNode*, Function *> OneCalledFunction;
|
||||
|
||||
/// GlobalECs - The equivalence classes for each global value that is merged
|
||||
/// with other global values in the DSGraphs.
|
||||
EquivalenceClasses<GlobalValue*> GlobalECs;
|
||||
|
||||
public:
|
||||
/// EquivClassGraphs - Computes the equivalence classes and then the
|
||||
/// folded DS graphs for each class.
|
||||
@ -62,6 +64,8 @@ namespace llvm {
|
||||
///
|
||||
void print(std::ostream &O, const Module *M) const;
|
||||
|
||||
EquivalenceClasses<GlobalValue*> &getGlobalECs() { return GlobalECs; }
|
||||
|
||||
/// getDSGraph - Return the data structure graph for the specified function.
|
||||
/// This returns the folded graph. The folded graph is the same as the CBU
|
||||
/// graph iff the function is in a singleton equivalence class AND all its
|
||||
|
Loading…
Reference in New Issue
Block a user