From 54a76b880858bc2b6abd1357a5694e16e7794315 Mon Sep 17 00:00:00 2001 From: Brian Gaeke Date: Mon, 8 Mar 2004 23:22:02 +0000 Subject: [PATCH] Save argument list alloc state by recording it as the operands of Instruction #-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 | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp index c0b52d43b9a..7c30ca9b9e9 100644 --- a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp +++ b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp @@ -1125,7 +1125,7 @@ void PhyRegAlloc::allocateStackSpace4SpilledLRs() { void PhyRegAlloc::saveStateForValue (std::vector &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 &state, /// void PhyRegAlloc::saveState () { std::vector &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 &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);