LLVM API Documentation

VirtRegMap.cpp File Reference

#include "VirtRegMap.h"
#include "llvm/Function.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/STLExtras.h"
#include <algorithm>
#include <iostream>

Include dependency graph for VirtRegMap.cpp:

Go to the source code of this file.

Classes

class  AvailableSpills

Defines

#define DEBUG_TYPE   "spiller"

Enumerations

enum  SpillerName { simple, local }

Functions

llvm::Spillerllvm::createSpiller ()

Variables

Statistic NumSpills ("spiller","Number of register spills")
Statistic NumStores ("spiller","Number of stores added")
Statistic NumLoads ("spiller","Number of loads added")
Statistic NumReused ("spiller","Number of values reused")
Statistic NumDSE ("spiller","Number of dead stores elided")
Statistic NumDCE ("spiller","Number of copies elided")
cl::opt< SpillerNameSpillerOpt ("spiller", cl::desc("Spiller to use: (default: local)"), cl::Prefix, cl::values(clEnumVal(simple," simple spiller"), clEnumVal(local," local spiller"), clEnumValEnd), cl::init(local))
const MRegisterInfoMRI
const TargetInstrInfoTII
unsigned Operand
unsigned StackSlot
unsigned PhysRegReused
unsigned AssignedPhysReg
unsigned VirtReg
MachineInstrMI
std::vector< ReusedOp > Reuses


Define Documentation

#define DEBUG_TYPE   "spiller"

Definition at line 19 of file VirtRegMap.cpp.


Enumeration Type Documentation

enum SpillerName

Enumerator:
simple 
local 

Definition at line 43 of file VirtRegMap.cpp.


Variable Documentation

unsigned AssignedPhysReg

Definition at line 370 of file VirtRegMap.cpp.

MachineInstr& MI

Definition at line 384 of file VirtRegMap.cpp.

Referenced by llvm::MachineInstrBuilder::addCCReg(), llvm::MachineInstrBuilder::addConstantPoolIndex(), llvm::MachineInstrBuilder::addExternalSymbol(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::DSNode::addFullFunctionList(), llvm::MachineInstrBuilder::addGlobalAddress(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addImm64(), llvm::LiveIntervals::addIntervalsForSpills(), llvm::MachineInstrBuilder::addMBB(), llvm::MachineInstrBuilder::addMReg(), llvm::MSchedGraphSB::addNode(), llvm::MSchedGraph::addNode(), llvm::DSGraph::addObjectToGraph(), llvm::MachineInstrBuilder::addPCDisp(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstrBuilder::addSImm(), llvm::LiveVariables::addVirtualRegisterDead(), llvm::LiveVariables::addVirtualRegisterKilled(), llvm::MachineInstrBuilder::addZImm(), llvm::BuildMI(), CleanupConstantGlobalUsers(), llvm::LiveRangeInfo::coalesceLRs(), llvm::X86InstrInfo::commuteInstruction(), llvm::TargetInstrInfo::commuteInstruction(), llvm::PPCInstrInfo::commuteInstruction(), llvm::X86InstrInfo::convertToThreeAddress(), llvm::SparcV9RegInfo::cpMem2RegMI(), llvm::SparcV9RegInfo::cpReg2MemMI(), llvm::SparcV9RegInfo::cpReg2RegMI(), llvm::SparcV9RegInfo::cpValue2Value(), CreateVirtualRegisters(), llvm::LiveVariables::dead_begin(), llvm::LiveVariables::dead_end(), llvm::LiveVariables::dead_range(), llvm::ilist_traits< MachineInstr >::destroySentinel(), llvm::SparcRegisterInfo::eliminateCallFramePseudoInstr(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::IA64RegisterInfo::eliminateFrameIndex(), llvm::AlphaRegisterInfo::eliminateFrameIndex(), llvm::IA64RegisterInfo::emitEpilogue(), llvm::ScheduleDAG::EmitNode(), llvm::X86RegisterInfo::emitPrologue(), llvm::IA64RegisterInfo::emitPrologue(), llvm::SchedGraph::find(), llvm::Archive::findModuleDefiningSymbol(), llvm::X86RegisterInfo::foldMemoryOperand(), llvm::SparcRegisterInfo::foldMemoryOperand(), llvm::PPCRegisterInfo::foldMemoryOperand(), llvm::AlphaRegisterInfo::foldMemoryOperand(), llvm::CallArgsDescriptor::get(), llvm::LiveVariables::getDeadDefsVector(), llvm::VirtRegMap::getFoldedVirts(), llvm::SchedGraph::getGraphNodeForInstr(), llvm::LiveVariables::getKillsVector(), llvm::EquivalenceClasses< llvm::GlobalValue * >::getLeaderValue(), llvm::FunctionLiveVarInfo::getLiveVarSetAfterMInst(), llvm::FunctionLiveVarInfo::getLiveVarSetBeforeMInst(), llvm::SchedGraphNode::getMachineInstr(), getNumBytesForInstruction(), llvm::SchedGraphNode::getOpcode(), llvm::EquivalenceClasses< llvm::GlobalValue * >::getOrInsertLeaderValue(), llvm::SlotMachine::getSlot(), llvm::LiveVariables::HandleVirtRegUse(), HandleVRSaveUpdate(), llvm::UniqueVector< llvm::DIEAbbrev >::idFor(), llvm::UniqueVector< llvm::DIEAbbrev >::insert(), llvm::X86TargetLowering::InsertAtEndOfBasicBlock(), llvm::PPCTargetLowering::InsertAtEndOfBasicBlock(), InstructionUsesRegister(), llvm::SchedGraphNode::isDummyNode(), llvm::X86InstrInfo::isLoadFromStackSlot(), llvm::SparcInstrInfo::isLoadFromStackSlot(), llvm::PPCInstrInfo::isLoadFromStackSlot(), llvm::AlphaInstrInfo::isLoadFromStackSlot(), llvm::X86SharedAsmPrinter::isMem(), llvm::X86InstrInfo::isMoveInstr(), llvm::SparcInstrInfo::isMoveInstr(), llvm::PPCInstrInfo::isMoveInstr(), llvm::IA64InstrInfo::isMoveInstr(), llvm::AlphaInstrInfo::isMoveInstr(), llvm::X86InstrInfo::isStoreToStackSlot(), llvm::SparcInstrInfo::isStoreToStackSlot(), llvm::PPCInstrInfo::isStoreToStackSlot(), llvm::AlphaInstrInfo::isStoreToStackSlot(), llvm::IsUselessCopy(), llvm::LiveVariables::killed_begin(), llvm::LiveVariables::killed_end(), llvm::LiveVariables::killed_range(), llvm::LiveVariables::KillsRegister(), MakeMIInst(), MakeMRIInst(), MakeMRInst(), MakeRMIInst(), MakeRMInst(), llvm::operator<<(), llvm::EquivalenceClasses< llvm::GlobalValue * >::operator=(), llvm::SchedGraph::operator[](), OptimizeGlobalAddressOfMalloc(), OptimizeOnceStoredGlobal(), llvm::X86IntelAsmPrinter::printf128mem(), llvm::X86ATTAsmPrinter::printf128mem(), llvm::X86IntelAsmPrinter::printf32mem(), llvm::X86ATTAsmPrinter::printf32mem(), llvm::X86IntelAsmPrinter::printf64mem(), llvm::X86ATTAsmPrinter::printf64mem(), llvm::X86IntelAsmPrinter::printi128mem(), llvm::X86ATTAsmPrinter::printi128mem(), llvm::X86IntelAsmPrinter::printi16mem(), llvm::X86ATTAsmPrinter::printi16mem(), llvm::X86IntelAsmPrinter::printi32mem(), llvm::X86ATTAsmPrinter::printi32mem(), llvm::X86IntelAsmPrinter::printi64mem(), llvm::X86ATTAsmPrinter::printi64mem(), llvm::X86IntelAsmPrinter::printi8mem(), llvm::X86ATTAsmPrinter::printi8mem(), llvm::AsmPrinter::printInlineAsm(), llvm::X86IntelAsmPrinter::printMachineInstruction(), llvm::X86ATTAsmPrinter::printMachineInstruction(), llvm::X86IntelAsmPrinter::printMemReference(), llvm::X86ATTAsmPrinter::printMemReference(), llvm::X86IntelAsmPrinter::printOperand(), llvm::X86ATTAsmPrinter::printOperand(), llvm::X86IntelAsmPrinter::printSSECC(), llvm::X86ATTAsmPrinter::printSSECC(), llvm::MachineBasicBlock::push_back(), llvm::LiveVariables::RegisterDefIsDead(), llvm::FunctionLiveVarInfo::releaseMemory(), llvm::LiveVariables::VarInfo::removeKill(), llvm::LiveVariables::removeVirtualRegisterDead(), llvm::LiveVariables::removeVirtualRegisterKilled(), llvm::LiveVariables::removeVirtualRegistersDead(), llvm::LiveVariables::removeVirtualRegistersKilled(), llvm::SparcV9CodeEmitter::runOnMachineFunction(), llvm::LiveVariables::runOnMachineFunction(), llvm::FindUsedTypes::runOnModule(), and llvm::LiveRangeInfo::~LiveRangeInfo().

const MRegisterInfo* MRI

Definition at line 209 of file VirtRegMap.cpp.

Referenced by AvailableSpills::addAvailable(), AvailableSpills::getRegInfo(), llvm::SelectionDAGLowering::GetRegistersForValue(), isAllocatableRegister(), OutputReg(), llvm::VirtRegMap::print(), print(), llvm::MachineFunction::print(), llvm::LiveInterval::print(), and updateSpillWeights().

Statistic NumDCE("spiller","Number of copies elided") [static]

Statistic NumDSE("spiller","Number of dead stores elided") [static]

Statistic NumLoads("spiller","Number of loads added") [static]

Statistic NumReused("spiller","Number of values reused") [static]

Statistic NumSpills("spiller","Number of register spills") [static]

Referenced by llvm::VirtRegMap::assignVirt2StackSlot().

Statistic NumStores("spiller","Number of stores added") [static]

unsigned Operand

Definition at line 361 of file VirtRegMap.cpp.

Referenced by llvm::SelectionDAG::getNode(), and llvm::AssemblyWriter::writeOperand().

unsigned PhysRegReused

Definition at line 367 of file VirtRegMap.cpp.

std::vector<ReusedOp> Reuses

Definition at line 385 of file VirtRegMap.cpp.

cl::opt<SpillerName> SpillerOpt("spiller", cl::desc("Spiller to use: (default: local)"), cl::Prefix, cl::values(clEnumVal(simple," simple spiller"),clEnumVal(local," local spiller"),clEnumValEnd), cl::init(local)) [static]

Referenced by llvm::createSpiller().

unsigned StackSlot

Definition at line 364 of file VirtRegMap.cpp.

Referenced by llvm::X86TargetLowering::LowerOperation().

const TargetInstrInfo* TII

Definition at line 210 of file VirtRegMap.cpp.

Referenced by llvm::MachineBasicBlock::getFirstTerminator(), llvm::SDNode::getOperationName(), ReplaceUsesOfBlockWith(), and llvm::LiveVariables::runOnMachineFunction().

unsigned VirtReg

Definition at line 373 of file VirtRegMap.cpp.