From 25d4b54f93b121d0f6beb387e85e8b2670c02b48 Mon Sep 17 00:00:00 2001 From: Brian Gaeke Date: Sun, 30 May 2004 07:08:43 +0000 Subject: [PATCH] Reduce the amount of LLVM Values for which we save reg. allocator state. Also, save the state for the incoming register of each phi node. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13906 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp index fbabc61aa58..b813ee49713 100644 --- a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp +++ b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp @@ -28,6 +28,7 @@ #include "../LiveVar/FunctionLiveVarInfo.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" +#include "llvm/iPHINode.h" #include "llvm/iOther.h" #include "llvm/Module.h" #include "llvm/Type.h" @@ -1164,18 +1165,22 @@ void PhyRegAlloc::saveState () { saveStateForValue (state, Arg, -1, ArgNum); ++ArgNum; } - unsigned Insn = 0; + unsigned InstCount = 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) { - const Value *V = (*II).getOperand (i); - // Don't worry about it unless it's something whose reg. we'll need. - if (!isa (V) && !isa (V)) - continue; - saveStateForValue (state, V, Insn, i); + const Instruction *Inst = &*II; + saveStateForValue (state, Inst, InstCount, -1); + if (isa (Inst)) { + MachineCodeForInstruction &MCforPN = MachineCodeForInstruction::get(Inst); + // Last instr should be the copy...figure out what reg it is reading from + if (Value *PhiCpRes = MCforPN.back()->getOperand(0).getVRegValueOrNull()){ + if (DEBUG_RA) + std::cerr << "Found Phi copy result: " << PhiCpRes->getName() + << " in: " << *MCforPN.back() << "\n"; + saveStateForValue (state, PhiCpRes, InstCount, -2); + } } - ++Insn; + ++InstCount; } }