Save argument list alloc state by recording it as the operands of Instruction
authorBrian Gaeke <gaeke@uiuc.edu>
Mon, 8 Mar 2004 23:22:02 +0000 (23:22 +0000)
committerBrian Gaeke <gaeke@uiuc.edu>
Mon, 8 Mar 2004 23:22:02 +0000 (23:22 +0000)
#-1. Other minor changes to deal with AllocInfo.Instruction becoming an int.

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

lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp

index c0b52d43b9afa30c7a625e986893ee41f54e21ef..7c30ca9b9e903f3092a7a413f190a2ac3ed2f822 100644 (file)
@@ -1125,7 +1125,7 @@ void PhyRegAlloc::allocateStackSpace4SpilledLRs() {
 
 
 void PhyRegAlloc::saveStateForValue (std::vector<AllocInfo> &state,
-                                     const Value *V, unsigned Insn, int Opnd) {
+                                     const Value *V, int Insn, int Opnd) {
   LiveRangeMapType::const_iterator HMI = LRI->getLiveRangeMap ()->find (V); 
   LiveRangeMapType::const_iterator HMIEnd = LRI->getLiveRangeMap ()->end ();   
   AllocInfo::AllocStateTy AllocState = AllocInfo::NotAllocated; 
@@ -1155,7 +1155,15 @@ void PhyRegAlloc::saveStateForValue (std::vector<AllocInfo> &state,
 ///
 void PhyRegAlloc::saveState () {
   std::vector<AllocInfo> &state = FnAllocState[Fn];
+  unsigned ArgNum = 0;
+  // Arguments encoded as instruction # -1
+  for (Function::const_aiterator i=Fn->abegin (), e=Fn->aend (); i != e; ++i) {
+    const Argument *Arg = &*i;
+    saveStateForValue (state, Arg, -1, ArgNum);
+    ++ArgNum;
+  }
   unsigned Insn = 0;
+  // Instructions themselves encoded as operand # -1
   for (const_inst_iterator II=inst_begin (Fn), IE=inst_end (Fn); II!=IE; ++II){
     saveStateForValue (state, (*II), Insn, -1);
     for (unsigned i = 0; i < (*II)->getNumOperands (); ++i) {
@@ -1176,7 +1184,7 @@ void PhyRegAlloc::saveState () {
 ///
 void PhyRegAlloc::verifySavedState () {
   std::vector<AllocInfo> &state = FnAllocState[Fn];
-  unsigned Insn = 0;
+  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);