mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-17 06:33:21 +00:00
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
This commit is contained in:
parent
757ccd5149
commit
54a76b8808
@ -1125,7 +1125,7 @@ void PhyRegAlloc::allocateStackSpace4SpilledLRs() {
|
|||||||
|
|
||||||
|
|
||||||
void PhyRegAlloc::saveStateForValue (std::vector<AllocInfo> &state,
|
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 HMI = LRI->getLiveRangeMap ()->find (V);
|
||||||
LiveRangeMapType::const_iterator HMIEnd = LRI->getLiveRangeMap ()->end ();
|
LiveRangeMapType::const_iterator HMIEnd = LRI->getLiveRangeMap ()->end ();
|
||||||
AllocInfo::AllocStateTy AllocState = AllocInfo::NotAllocated;
|
AllocInfo::AllocStateTy AllocState = AllocInfo::NotAllocated;
|
||||||
@ -1155,7 +1155,15 @@ void PhyRegAlloc::saveStateForValue (std::vector<AllocInfo> &state,
|
|||||||
///
|
///
|
||||||
void PhyRegAlloc::saveState () {
|
void PhyRegAlloc::saveState () {
|
||||||
std::vector<AllocInfo> &state = FnAllocState[Fn];
|
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;
|
unsigned Insn = 0;
|
||||||
|
// Instructions themselves encoded as operand # -1
|
||||||
for (const_inst_iterator II=inst_begin (Fn), IE=inst_end (Fn); II!=IE; ++II){
|
for (const_inst_iterator II=inst_begin (Fn), IE=inst_end (Fn); II!=IE; ++II){
|
||||||
saveStateForValue (state, (*II), Insn, -1);
|
saveStateForValue (state, (*II), Insn, -1);
|
||||||
for (unsigned i = 0; i < (*II)->getNumOperands (); ++i) {
|
for (unsigned i = 0; i < (*II)->getNumOperands (); ++i) {
|
||||||
@ -1176,7 +1184,7 @@ void PhyRegAlloc::saveState () {
|
|||||||
///
|
///
|
||||||
void PhyRegAlloc::verifySavedState () {
|
void PhyRegAlloc::verifySavedState () {
|
||||||
std::vector<AllocInfo> &state = FnAllocState[Fn];
|
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) {
|
for (const_inst_iterator II=inst_begin (Fn), IE=inst_end (Fn); II!=IE; ++II) {
|
||||||
const Instruction *I = *II;
|
const Instruction *I = *II;
|
||||||
MachineCodeForInstruction &Instrs = MachineCodeForInstruction::get (I);
|
MachineCodeForInstruction &Instrs = MachineCodeForInstruction::get (I);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user