LLVM API Documentation

llvm::MachineRegisterInfo Class Reference

#include <MachineRegisterInfo.h>

Collaboration diagram for llvm::MachineRegisterInfo:

Collaboration graph
[legend]

List of all members.

Public Types

typedef defusechain_iterator
< true, true > 
reg_iterator
typedef defusechain_iterator
< false, true > 
def_iterator
 def_iterator/def_begin/def_end - Walk all defs of the specified register.
typedef defusechain_iterator
< true, false > 
use_iterator
 use_iterator/use_begin/use_end - Walk all uses of the specified register.
typedef std::vector< std::pair
< unsigned, unsigned >
>::const_iterator 
livein_iterator
typedef std::vector< unsigned >
::const_iterator 
liveout_iterator

Public Member Functions

 MachineRegisterInfo (const TargetRegisterInfo &TRI)
 ~MachineRegisterInfo ()
reg_iterator reg_begin (unsigned RegNo) const
def_iterator def_begin (unsigned RegNo) const
use_iterator use_begin (unsigned RegNo) const
bool use_empty (unsigned RegNo) const
void replaceRegWith (unsigned FromReg, unsigned ToReg)
MachineOperand *& getRegUseDefListHead (unsigned RegNo)
MachineOperandgetRegUseDefListHead (unsigned RegNo) const
MachineInstrgetVRegDef (unsigned Reg) const
void dumpUses (unsigned RegNo) const
const TargetRegisterClassgetRegClass (unsigned Reg) const
void setRegClass (unsigned Reg, const TargetRegisterClass *RC)
unsigned createVirtualRegister (const TargetRegisterClass *RegClass)
unsigned getLastVirtReg () const
std::vector< unsigned > & getRegClassVirtRegs (const TargetRegisterClass *RC)
bool isPhysRegUsed (unsigned Reg) const
void setPhysRegUsed (unsigned Reg)
void setPhysRegUnused (unsigned Reg)
void addLiveIn (unsigned Reg, unsigned vreg=0)
void addLiveOut (unsigned Reg)
livein_iterator livein_begin () const
livein_iterator livein_end () const
bool livein_empty () const
liveout_iterator liveout_begin () const
liveout_iterator liveout_end () const
bool liveout_empty () const
bool isLiveIn (unsigned Reg) const

Static Public Member Functions

static reg_iterator reg_end ()
static def_iterator def_end ()
static use_iterator use_end ()

Classes

class  defusechain_iterator


Detailed Description

MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.

Definition at line 27 of file MachineRegisterInfo.h.


Member Typedef Documentation

reg_iterator/reg_begin/reg_end - Walk all defs and uses of the specified register.

Definition at line 74 of file MachineRegisterInfo.h.

def_iterator/def_begin/def_end - Walk all defs of the specified register.

Definition at line 85 of file MachineRegisterInfo.h.

use_iterator/use_begin/use_end - Walk all uses of the specified register.

Definition at line 92 of file MachineRegisterInfo.h.

typedef std::vector<std::pair<unsigned,unsigned> >::const_iterator llvm::MachineRegisterInfo::livein_iterator

Definition at line 212 of file MachineRegisterInfo.h.

typedef std::vector<unsigned>::const_iterator llvm::MachineRegisterInfo::liveout_iterator

Definition at line 213 of file MachineRegisterInfo.h.


Constructor & Destructor Documentation

MachineRegisterInfo::MachineRegisterInfo ( const TargetRegisterInfo TRI  )  [explicit]

MachineRegisterInfo::~MachineRegisterInfo (  ) 

Definition at line 27 of file MachineRegisterInfo.cpp.

References second, and llvm::BitVector::size().

Referenced by llvm::MachineFunction::~MachineFunction().


Member Function Documentation

reg_iterator llvm::MachineRegisterInfo::reg_begin ( unsigned  RegNo  )  const [inline]

static reg_iterator llvm::MachineRegisterInfo::reg_end (  )  [inline, static]

def_iterator llvm::MachineRegisterInfo::def_begin ( unsigned  RegNo  )  const [inline]

static def_iterator llvm::MachineRegisterInfo::def_end (  )  [inline, static]

use_iterator llvm::MachineRegisterInfo::use_begin ( unsigned  RegNo  )  const [inline]

static use_iterator llvm::MachineRegisterInfo::use_end (  )  [inline, static]

Definition at line 96 of file MachineRegisterInfo.h.

Referenced by dumpUses(), EmitLiveInCopy(), isLiveInButUnusedBefore(), and use_empty().

bool llvm::MachineRegisterInfo::use_empty ( unsigned  RegNo  )  const [inline]

use_empty - Return true if there are no instructions using the specified register.

Definition at line 100 of file MachineRegisterInfo.h.

References use_begin(), and use_end().

Referenced by llvm::SimpleRegisterCoalescing::runOnMachineFunction().

void MachineRegisterInfo::replaceRegWith ( unsigned  FromReg,
unsigned  ToReg 
)

replaceRegWith - Replace all instances of FromReg with ToReg in the machine function. This is like llvm-level X->replaceAllUsesWith(Y), except that it also changes any definitions of the register as well.

replaceRegWith - Replace all instances of FromReg with ToReg in the machine function. This is like llvm-level X->replaceAllUsesWith(Y), except that it also changes any definitions of the register as well.

Definition at line 73 of file MachineRegisterInfo.cpp.

References E, I, reg_begin(), reg_end(), and llvm::MachineOperand::setReg().

MachineOperand*& llvm::MachineRegisterInfo::getRegUseDefListHead ( unsigned  RegNo  )  [inline]

getRegUseDefListHead - Return the head pointer for the register use/def list for the specified virtual or physical register.

Definition at line 110 of file MachineRegisterInfo.h.

References llvm::TargetRegisterInfo::FirstVirtualRegister.

Referenced by def_begin(), reg_begin(), and use_begin().

MachineOperand* llvm::MachineRegisterInfo::getRegUseDefListHead ( unsigned  RegNo  )  const [inline]

MachineInstr * MachineRegisterInfo::getVRegDef ( unsigned  Reg  )  const

getVRegDef - Return the machine instr that defines the specified virtual register or null if none is found. This assumes that the code is in SSA form, so there should only be one definition.

getVRegDef - Return the machine instr that defines the specified virtual register or null if none is found. This assumes that the code is in SSA form, so there should only be one definition.

Definition at line 88 of file MachineRegisterInfo.cpp.

References E, llvm::TargetRegisterInfo::FirstVirtualRegister, I, reg_begin(), and reg_end().

Referenced by llvm::LiveVariables::HandleVirtRegUse(), interferes(), isSourceDefinedByImplicitDef(), and llvm::LiveVariables::runOnMachineFunction().

void MachineRegisterInfo::dumpUses ( unsigned  RegNo  )  const

Definition at line 101 of file MachineRegisterInfo.cpp.

References E, I, use_begin(), and use_end().

const TargetRegisterClass* llvm::MachineRegisterInfo::getRegClass ( unsigned  Reg  )  const [inline]

void llvm::MachineRegisterInfo::setRegClass ( unsigned  Reg,
const TargetRegisterClass RC 
) [inline]

setRegClass - Set the register class of the specified virtual register.

Definition at line 147 of file MachineRegisterInfo.h.

References llvm::TargetRegisterInfo::FirstVirtualRegister, llvm::TargetRegisterClass::getID(), I, and VR.

unsigned MachineRegisterInfo::createVirtualRegister ( const TargetRegisterClass RegClass  ) 

unsigned llvm::MachineRegisterInfo::getLastVirtReg (  )  const [inline]

getLastVirtReg - Return the highest currently assigned virtual register.

Definition at line 171 of file MachineRegisterInfo.h.

References llvm::TargetRegisterInfo::FirstVirtualRegister.

Referenced by createVirtualRegister(), llvm::VirtRegMap::grow(), llvm::VirtRegMap::print(), and llvm::VirtRegMap::VirtRegMap().

std::vector<unsigned>& llvm::MachineRegisterInfo::getRegClassVirtRegs ( const TargetRegisterClass RC  )  [inline]

getRegClassVirtRegs - Return the list of virtual registers of the given target register class.

Definition at line 177 of file MachineRegisterInfo.h.

References llvm::TargetRegisterClass::getID().

bool llvm::MachineRegisterInfo::isPhysRegUsed ( unsigned  Reg  )  const [inline]

isPhysRegUsed - Return true if the specified register is used in this function. This only works after register allocation.

Definition at line 187 of file MachineRegisterInfo.h.

Referenced by llvm::IA64RegisterInfo::emitPrologue(), HandleVRSaveUpdate(), llvm::XCoreRegisterInfo::processFunctionBeforeCalleeSavedScan(), and llvm::ARMRegisterInfo::processFunctionBeforeCalleeSavedScan().

void llvm::MachineRegisterInfo::setPhysRegUsed ( unsigned  Reg  )  [inline]

setPhysRegUsed - Mark the specified register used in this function. This should only be called during and after register allocation.

Definition at line 191 of file MachineRegisterInfo.h.

Referenced by llvm::ARMRegisterInfo::processFunctionBeforeCalleeSavedScan().

void llvm::MachineRegisterInfo::setPhysRegUnused ( unsigned  Reg  )  [inline]

setPhysRegUnused - Mark the specified register unused in this function. This should only be called during and after register allocation.

Definition at line 195 of file MachineRegisterInfo.h.

Referenced by llvm::XCoreRegisterInfo::processFunctionBeforeCalleeSavedScan(), llvm::SPURegisterInfo::processFunctionBeforeCalleeSavedScan(), and llvm::PPCRegisterInfo::processFunctionBeforeCalleeSavedScan().

void llvm::MachineRegisterInfo::addLiveIn ( unsigned  Reg,
unsigned  vreg = 0 
) [inline]

addLiveIn/Out - Add the specified register as a live in/out. Note that it is an error to add the same register to the same set more than once.

Definition at line 204 of file MachineRegisterInfo.h.

Referenced by AddLiveIn(), llvm::SparcTargetLowering::LowerArguments(), llvm::IA64TargetLowering::LowerArguments(), LowerFORMAL_ARGUMENT(), and LowerFORMAL_ARGUMENTS().

void llvm::MachineRegisterInfo::addLiveOut ( unsigned  Reg  )  [inline]

Definition at line 207 of file MachineRegisterInfo.h.

Referenced by llvm::IA64TargetLowering::LowerArguments(), and LowerRET().

livein_iterator llvm::MachineRegisterInfo::livein_begin (  )  const [inline]

livein_iterator llvm::MachineRegisterInfo::livein_end (  )  const [inline]

bool llvm::MachineRegisterInfo::livein_empty (  )  const [inline]

Definition at line 216 of file MachineRegisterInfo.h.

Referenced by llvm::MachineFunction::print().

liveout_iterator llvm::MachineRegisterInfo::liveout_begin (  )  const [inline]

liveout_iterator llvm::MachineRegisterInfo::liveout_end (  )  const [inline]

bool llvm::MachineRegisterInfo::liveout_empty (  )  const [inline]

Definition at line 219 of file MachineRegisterInfo.h.

Referenced by LowerRET(), and llvm::MachineFunction::print().

bool llvm::MachineRegisterInfo::isLiveIn ( unsigned  Reg  )  const [inline]

Definition at line 221 of file MachineRegisterInfo.h.

References E, I, livein_begin(), and livein_end().


The documentation for this class was generated from the following files:



This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.