[llvm-commits] CVS: llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp PhyRegAlloc.h

Brian Gaeke gaeke at cs.uiuc.edu
Thu Mar 11 00:46:07 PST 2004


Changes in directory llvm/lib/Target/SparcV9/RegAlloc:

PhyRegAlloc.cpp updated: 1.142 -> 1.143
PhyRegAlloc.h updated: 1.63 -> 1.64

---
Log message:

In PhyRegAlloc::saveState(), dump Arguments' saved-state, and try to
make the output more compact.

Divorce state-saving from the doFinalization method; for some reason it's not
getting called when I want it to, at Reoptimizer time. Put the guts in
PhyRegAlloc::finishSavingState(). Put an abort() in it so that I can be really
really sure that it's getting called.

Update comments.


---
Diffs of the changes:  (+31 -10)

Index: llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
diff -u llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp:1.142 llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp:1.143
--- llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp:1.142	Wed Mar 10 16:21:03 2004
+++ llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp	Thu Mar 11 00:45:51 2004
@@ -1186,14 +1186,27 @@
 ///
 void PhyRegAlloc::verifySavedState () {
   std::vector<AllocInfo> &state = FnAllocState[Fn];
+  int ArgNum = 0;
+  for (Function::const_aiterator i=Fn->abegin (), e=Fn->aend (); i != e; ++i) {
+    const Argument *Arg = &*i;
+    std::cerr << "Argument:  " << *Arg << "\n"
+              << "FnAllocState:\n";
+    for (unsigned i = 0; i < state.size (); ++i) {
+      AllocInfo &S = state[i];
+      if (S.Instruction == -1 && S.Operand == ArgNum)
+        std::cerr << "  " << S << "\n";
+    }
+    std::cerr << "----------\n";
+    ++ArgNum;
+  }
   int Insn = 0;
   for (const_inst_iterator II=inst_begin (Fn), IE=inst_end (Fn); II!=IE; ++II) {
     const Instruction *I = *II;
     MachineCodeForInstruction &Instrs = MachineCodeForInstruction::get (I);
-    std::cerr << "Instruction:\n" << "  " << *I << "\n"
+    std::cerr << "Instruction: " << *I
               << "MachineCodeForInstruction:\n";
     for (unsigned i = 0, n = Instrs.size (); i != n; ++i)
-      std::cerr << "  " << *Instrs[i] << "\n";
+      std::cerr << "  " << *Instrs[i];
     std::cerr << "FnAllocState:\n";
     for (unsigned i = 0; i < state.size (); ++i) {
       AllocInfo &S = state[i];
@@ -1206,21 +1219,29 @@
 }
 
 
+bool PhyRegAlloc::doFinalization (Module &M) { 
+  if (SaveRegAllocState) finishSavingState (M);
+  return false;
+}
+
+
 /// Finish the job of saveState(), by collapsing FnAllocState into an LLVM
-/// Constant and stuffing it inside the Module. (NOTE: Soon, there will be
-/// other, better ways of storing the saved state; this one is cumbersome and
-/// does not work well with the JIT.)
+/// Constant and stuffing it inside the Module.
 ///
-bool PhyRegAlloc::doFinalization (Module &M) { 
-  if (!SaveRegAllocState)
-    return false; // Nothing to do here, unless we're saving state.
+/// FIXME: There should be other, better ways of storing the saved
+/// state; this one is cumbersome and does not work well with the JIT.
+///
+void PhyRegAlloc::finishSavingState (Module &M) {
+  std::cerr << "---- Saving reg. alloc state; SaveStateToModule = "
+            << SaveStateToModule << " ----\n";
+  abort ();
 
   // If saving state into the module, just copy new elements to the
   // correct global.
   if (!SaveStateToModule) {
     ExportedFnAllocState = FnAllocState;
     // FIXME: should ONLY copy new elements in FnAllocState
-    return false;
+    return;
   }
 
   // Convert FnAllocState to a single Constant array and add it
@@ -1282,7 +1303,6 @@
   new GlobalVariable (ST2, true, GlobalValue::ExternalLinkage,
                       ConstantStruct::get (ST2, CV2), "_llvm_regAllocState",
                       &M);
-  return false; // No error.
 }
 
 


Index: llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.h
diff -u llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.h:1.63 llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.h:1.64
--- llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.h:1.63	Mon Mar  8 17:22:03 2004
+++ llvm/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.h	Thu Mar 11 00:45:52 2004
@@ -129,6 +129,7 @@
                           const Value *V, int Insn, int Opnd);
   void saveState();
   void verifySavedState();
+  void finishSavingState(Module &M);
 
   void setCallInterferences(const MachineInstr *MI, 
 			    const ValueSet *LVSetAft);





More information about the llvm-commits mailing list