C-Breeze
C Compiler Infrastructure

[ Project home page]
Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

Register Class Reference

#include <register.h>

List of all members.

Public Member Functions

 Register (Reg_type type=reg_unknown)
 Register (unsigned int n, Reg_type rt)
 Register (const Register &r)
bool isValid () const
unsigned int num () const
void num (unsigned int n)
Reg_type type () const
void type (Reg_type t)
Register & makeInvalid ()
Register & makeGPR ()
Register & makeFPR ()
Register & makeStackPtr ()
Register & makeFramePtr ()
void setType (typeNode *the_type)
Register & operator= (const Register &rightR)
Register & operator= (unsigned int val)
bool operator== (const Register &rightR) const
bool operator!= (const Register &rightR) const
bool operator< (const Register &rightR) const
string to_string (bool wantPrefixAdd=true, bool wantPrefixRemove=false) const

Static Public Member Functions

Register getRegSp ()
Register getRegFp ()
Register getRegRetValFixed ()
Register getRegRetValFloat ()
bool getRegRetVal (typeNode *the_type, Register &reg)

Private Attributes

unsigned int _num
Reg_type _type

Friends

class LirInst


Constructor & Destructor Documentation

Register::Register Reg_type    type = reg_unknown [inline]
 

Definition at line 79 of file register.h.

References type().

Register::Register unsigned int    n,
Reg_type    rt
[inline]
 

Definition at line 86 of file register.h.

Register::Register const Register &    r [inline]
 

Definition at line 93 of file register.h.


Member Function Documentation

Register Register::getRegFp   [static]
 

Definition at line 118 of file register.cc.

References CBZ::ArchInfo, and arch_info::get_reg_fp().

Referenced by briggs_reg_alloc::genSpillCode(), lir_gen_walker::load_stack_value(), lir_gen_walker::load_stack_var(), briggs_reg_alloc::loadSymReg(), and lir_gen_walker::store_stack().

bool Register::getRegRetVal typeNode   the_type,
Register &    reg
[static]
 

Definition at line 149 of file register.cc.

References CBZFAIL, getRegRetValFixed(), getRegRetValFloat(), typeNode::is_float(), typeNode::is_integer(), typeNode::is_pointer(), typeNode::is_void(), and Node::typ().

Referenced by lir_gen_walker::gen_call_assignment(), and lir_gen_walker::gen_local_decl().

Register Register::getRegRetValFixed   [static]
 

Definition at line 125 of file register.cc.

References CBZ::ArchInfo, and arch_info::get_reg_retval_fixed().

Referenced by asm_gen_walker::doCallerSave(), and getRegRetVal().

Register Register::getRegRetValFloat   [static]
 

Definition at line 137 of file register.cc.

References CBZ::ArchInfo, and arch_info::get_reg_retval_float().

Referenced by asm_gen_walker::doCallerSave(), and getRegRetVal().

Register Register::getRegSp   [static]
 

Definition at line 111 of file register.cc.

References CBZ::ArchInfo, and arch_info::get_reg_sp().

Referenced by lir_gen_walker::gen_call().

bool Register::isValid   const [inline]
 

Definition at line 100 of file register.h.

References reg_unknown.

Referenced by LirInst::get_dest(), LirInst::has_dest(), and briggs_reg_alloc::makeWebs().

Register& Register::makeFPR   [inline]
 

Definition at line 132 of file register.h.

References reg_fpr.

Referenced by setType().

Register& Register::makeFramePtr   [inline]
 

Definition at line 143 of file register.h.

References reg_frame_ptr.

Register& Register::makeGPR   [inline]
 

Definition at line 127 of file register.h.

References reg_gpr.

Referenced by LIR::BitwiseNOT(), LIR::GetEffectiveAddress(), LIR::GetGlobalAddress(), and setType().

Register& Register::makeInvalid   [inline]
 

Definition at line 122 of file register.h.

References reg_unknown.

Register& Register::makeStackPtr   [inline]
 

Definition at line 137 of file register.h.

References reg_stack_ptr.

void Register::num unsigned int    n [inline]
 

Definition at line 108 of file register.h.

unsigned int Register::num   const [inline]
 

Definition at line 104 of file register.h.

Referenced by briggs_reg_alloc::coalesceRegisters(), lir_flow_walker::computeRegisterLiveness(), briggs_reg_alloc::computeSpillCosts(), asm_gen_walker::doCalleeSave(), asm_gen_walker::doCallerSave(), briggs_reg_alloc::genSpillCode(), arch_info::get_reg_name(), arch_info::get_register(), dummy_reg_alloc::get_rreg(), dummy_reg_alloc::get_vreg(), briggs_reg_alloc::interfere(), dummy_reg_alloc::is_real_reg(), briggs_reg_alloc::isSymReg(), briggs_reg_alloc::liveAt(), briggs_reg_alloc::makeDuChains(), briggs_reg_alloc::makeWebs(), and briggs_reg_alloc::nonStore().

bool Register::operator!= const Register &    rightR const [inline]
 

Definition at line 175 of file register.h.

References _num, and _type.

bool Register::operator< const Register &    rightR const [inline]
 

Definition at line 181 of file register.h.

References _num.

Register& Register::operator= unsigned int    val [inline]
 

Definition at line 160 of file register.h.

Register& Register::operator= const Register &    rightR [inline]
 

Definition at line 154 of file register.h.

References _num, and _type.

bool Register::operator== const Register &    rightR const [inline]
 

Definition at line 167 of file register.h.

References _num, and _type.

void Register::setType typeNode   the_type
 

Definition at line 42 of file register.cc.

References CBZFAIL, typeNode::is_char(), typeNode::is_float(), typeNode::is_int(), typeNode::is_pointer(), makeFPR(), makeGPR(), and Node::typ().

Referenced by storage_alloc::assign_register(), LIR::ConvertType(), LIR::Load(), LIR::LoadImmediate(), LIR::LoadStatic(), LIR::make_simple(), and LIR::Neg().

string Register::to_string bool    wantPrefixAdd = true,
bool    wantPrefixRemove = false
const
 

Definition at line 56 of file register.cc.

References CBZ::ArchInfo, reg_fpr, reg_frame_ptr, reg_gpr, reg_stack_ptr, and cbz_util::string_format().

Referenced by briggs_reg_alloc::buildAdjMatrix(), asm_gen_walker::createTempForRegSave(), LIR::DeclareLocal(), dummy_reg_alloc::fix_allocated_virtual(), arch_info::make_template_replacements(), reg_or_const::to_string(), and LirInst::to_string().

void Register::type Reg_type    t [inline]
 

Definition at line 116 of file register.h.

Reg_type Register::type   const [inline]
 

Definition at line 112 of file register.h.

References Reg_type.

Referenced by storage_alloc::assign_arg_register(), asm_gen_walker::createTempForRegSave(), arch_info::get_register(), dummy_reg_alloc::get_rreg(), Symbol::getLirVt(), and Register().


Friends And Related Function Documentation

friend class LirInst [friend]
 

Definition at line 66 of file register.h.


Member Data Documentation

unsigned int Register::_num [private]
 

Definition at line 71 of file register.h.

Referenced by operator!=(), operator<(), operator=(), and operator==().

Reg_type Register::_type [private]
 

Definition at line 74 of file register.h.

Referenced by operator!=(), operator=(), and operator==().


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

Generated on August 27, 2003
Back to the C-Breeze home page