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/Support/Visibility.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.

Defines

#define DEBUG_TYPE   "spiller"

Enumerations

enum  SpillerName { simple, local }

Functions

llvm::Spillerllvm::createSpiller ()

Variables

static Statistic NumSpills ("spiller","Number of register spills")
static Statistic NumStores ("spiller","Number of stores added")
static Statistic NumLoads ("spiller","Number of loads added")
static Statistic NumReused ("spiller","Number of values reused")
static Statistic NumDSE ("spiller","Number of dead stores elided")
static Statistic NumDCE ("spiller","Number of copies elided")
static 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))


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 44 of file VirtRegMap.cpp.


Variable Documentation

unsigned AssignedPhysReg

Definition at line 372 of file VirtRegMap.cpp.

MachineInstr& MI

Definition at line 386 of file VirtRegMap.cpp.

Referenced by llvm::MachineInstrBuilder::addConstantPoolIndex(), llvm::MachineInstrBuilder::addExternalSymbol(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::DSNode::addFullFunctionList(), llvm::MachineInstrBuilder::addGlobalAddress(), llvm::MachineInstrBuilder::addImm(), llvm::LiveIntervals::addIntervalsForSpills(), llvm::MachineInstrBuilder::addJumpTableIndex(), llvm::MachineInstrBuilder::addMBB(), llvm::DSGraph::addObjectToGraph(), llvm::MachineInstrBuilder::addReg(), llvm::LiveVariables::addVirtualRegisterDead(), llvm::LiveVariables::addVirtualRegisterKilled(), llvm::BuildMI(), CleanupConstantGlobalUsers(), llvm::X86InstrInfo::commuteInstruction(), llvm::TargetInstrInfo::commuteInstruction(), llvm::PPCInstrInfo::commuteInstruction(), llvm::X86InstrInfo::convertToThreeAddress(), 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::ARMRegisterInfo::eliminateFrameIndex(), llvm::AlphaRegisterInfo::eliminateFrameIndex(), llvm::IA64RegisterInfo::emitEpilogue(), llvm::ScheduleDAG::EmitNode(), llvm::X86RegisterInfo::emitPrologue(), llvm::IA64RegisterInfo::emitPrologue(), llvm::Archive::findModuleDefiningSymbol(), llvm::X86RegisterInfo::foldMemoryOperand(), llvm::SparcRegisterInfo::foldMemoryOperand(), llvm::PPCRegisterInfo::foldMemoryOperand(), llvm::AlphaRegisterInfo::foldMemoryOperand(), llvm::LiveVariables::getDeadDefsVector(), llvm::VirtRegMap::getFoldedVirts(), llvm::LiveVariables::getKillsVector(), llvm::EquivalenceClasses< llvm::GlobalValue * >::getLeaderValue(), getNumBytesForInstruction(), 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::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::ARMInstrInfo::isMoveInstr(), llvm::AlphaInstrInfo::isMoveInstr(), llvm::X86InstrInfo::isStoreToStackSlot(), llvm::SparcInstrInfo::isStoreToStackSlot(), llvm::PPCInstrInfo::isStoreToStackSlot(), llvm::AlphaInstrInfo::isStoreToStackSlot(), 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=(), OptimizeGlobalAddressOfMalloc(), OptimizeOnceStoredGlobal(), llvm::X86IntelAsmPrinter::PrintAsmMemoryOperand(), llvm::X86ATTAsmPrinter::PrintAsmMemoryOperand(), llvm::X86IntelAsmPrinter::PrintAsmOperand(), llvm::X86ATTAsmPrinter::PrintAsmOperand(), 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::VirtRegMap::RemoveFromFoldedVirtMap(), llvm::LiveVariables::VarInfo::removeKill(), llvm::LiveVariables::removeVirtualRegisterDead(), llvm::LiveVariables::removeVirtualRegisterKilled(), llvm::LiveVariables::removeVirtualRegistersDead(), llvm::LiveVariables::removeVirtualRegistersKilled(), RemoveVRSaveCode(), llvm::LiveVariables::runOnMachineFunction(), and llvm::FindUsedTypes::runOnModule().

const MRegisterInfo* MRI

Definition at line 246 of file VirtRegMap.cpp.

const MRegisterInfo* MRI

Definition at line 209 of file VirtRegMap.cpp.

Referenced by CreateVirtualRegisters(), getInstrOperandRegClass(), getRegClass(), 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 363 of file VirtRegMap.cpp.

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

unsigned PhysRegReused

Definition at line 369 of file VirtRegMap.cpp.

std::multimap<unsigned, int> PhysRegsAvailable

Definition at line 257 of file VirtRegMap.cpp.

std::vector<ReusedOp> Reuses

Definition at line 387 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().

std::map<int, unsigned> SpillSlotsAvailable

Definition at line 252 of file VirtRegMap.cpp.

unsigned StackSlot

Definition at line 366 of file VirtRegMap.cpp.

const TargetInstrInfo* TII

Definition at line 247 of file VirtRegMap.cpp.

const TargetInstrInfo* TII

Definition at line 210 of file VirtRegMap.cpp.

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

unsigned VirtReg

Definition at line 375 of file VirtRegMap.cpp.