Publicize the type of FnAllocState.
authorBrian Gaeke <gaeke@uiuc.edu>
Fri, 24 Oct 2003 21:21:58 +0000 (21:21 +0000)
committerBrian Gaeke <gaeke@uiuc.edu>
Fri, 24 Oct 2003 21:21:58 +0000 (21:21 +0000)
Prototype option to save state in a global instead of as a Constant in
 the Module. (Turned off, for now, with the on/off switch welded in the off
 position. You get the idea.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9500 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
lib/CodeGen/RegAlloc/PhyRegAlloc.h
lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
lib/Target/SparcV9/RegAlloc/PhyRegAlloc.h

index 82ba0cc693cd7070f8e40a12cc8f406856a9e647..e70c90b039426c05027c731a443513bb620416b7 100644 (file)
 
 RegAllocDebugLevel_t DEBUG_RA;
 
+/// The reoptimizer wants to be able to grovel through the register
+/// allocator's state after it has done its job. This is a hack.
+///
+PhyRegAlloc::SavedStateMapTy ExportedFnAllocState;
+const bool SaveStateToModule = false;
+
 static cl::opt<RegAllocDebugLevel_t, true>
 DRA_opt("dregalloc", cl::Hidden, cl::location(DEBUG_RA),
         cl::desc("enable register allocation debugging information"),
@@ -1184,6 +1190,11 @@ bool PhyRegAlloc::doFinalization (Module &M) {
   if (!SaveRegAllocState)
     return false; // Nothing to do here, unless we're saving state.
 
+  if (!SaveStateToModule) {
+    ExportedFnAllocState = FnAllocState;
+    return false;
+  }
+
   // Convert FnAllocState to a single Constant array and add it
   // to the Module.
   ArrayType *AT = ArrayType::get (AllocInfo::getConstantType (), 0);
index db23f481615b4726ffc92c144689f774719f2e61..5fdd60f7ee0d888554f5912f5770add899a4c2fa 100644 (file)
@@ -85,11 +85,11 @@ class PhyRegAlloc : public FunctionPass {
   AddedInstrns AddedInstrAtEntry;       // to store instrns added at entry
   const LoopInfo *LoopDepthCalc;        // to calculate loop depths 
 
-  std::map<const Function *, std::vector<AllocInfo> > FnAllocState;
-
   PhyRegAlloc(const PhyRegAlloc&);     // DO NOT IMPLEMENT
   void operator=(const PhyRegAlloc&);  // DO NOT IMPLEMENT
 public:
+  typedef std::map<const Function *, std::vector<AllocInfo> > SavedStateMapTy;
+
   inline PhyRegAlloc (const TargetMachine &TM_) :
     TM (TM_), MRI (TM.getRegInfo ()),
     NumOfRegClasses (MRI.getNumOfRegClasses ()) { }
@@ -113,6 +113,8 @@ public:
   inline RegClass *getRegClassByID(unsigned id) { return RegClassList[id]; }
 
 private:
+  SavedStateMapTy FnAllocState;
+
   void addInterference(const Value *Def, const ValueSet *LVSet, 
                       bool isCallInst);
   bool markAllocatedRegs(MachineInstr* MInst);
index 82ba0cc693cd7070f8e40a12cc8f406856a9e647..e70c90b039426c05027c731a443513bb620416b7 100644 (file)
 
 RegAllocDebugLevel_t DEBUG_RA;
 
+/// The reoptimizer wants to be able to grovel through the register
+/// allocator's state after it has done its job. This is a hack.
+///
+PhyRegAlloc::SavedStateMapTy ExportedFnAllocState;
+const bool SaveStateToModule = false;
+
 static cl::opt<RegAllocDebugLevel_t, true>
 DRA_opt("dregalloc", cl::Hidden, cl::location(DEBUG_RA),
         cl::desc("enable register allocation debugging information"),
@@ -1184,6 +1190,11 @@ bool PhyRegAlloc::doFinalization (Module &M) {
   if (!SaveRegAllocState)
     return false; // Nothing to do here, unless we're saving state.
 
+  if (!SaveStateToModule) {
+    ExportedFnAllocState = FnAllocState;
+    return false;
+  }
+
   // Convert FnAllocState to a single Constant array and add it
   // to the Module.
   ArrayType *AT = ArrayType::get (AllocInfo::getConstantType (), 0);
index db23f481615b4726ffc92c144689f774719f2e61..5fdd60f7ee0d888554f5912f5770add899a4c2fa 100644 (file)
@@ -85,11 +85,11 @@ class PhyRegAlloc : public FunctionPass {
   AddedInstrns AddedInstrAtEntry;       // to store instrns added at entry
   const LoopInfo *LoopDepthCalc;        // to calculate loop depths 
 
-  std::map<const Function *, std::vector<AllocInfo> > FnAllocState;
-
   PhyRegAlloc(const PhyRegAlloc&);     // DO NOT IMPLEMENT
   void operator=(const PhyRegAlloc&);  // DO NOT IMPLEMENT
 public:
+  typedef std::map<const Function *, std::vector<AllocInfo> > SavedStateMapTy;
+
   inline PhyRegAlloc (const TargetMachine &TM_) :
     TM (TM_), MRI (TM.getRegInfo ()),
     NumOfRegClasses (MRI.getNumOfRegClasses ()) { }
@@ -113,6 +113,8 @@ public:
   inline RegClass *getRegClassByID(unsigned id) { return RegClassList[id]; }
 
 private:
+  SavedStateMapTy FnAllocState;
+
   void addInterference(const Value *Def, const ValueSet *LVSet, 
                       bool isCallInst);
   bool markAllocatedRegs(MachineInstr* MInst);