// 1) suggest colors for call and return args.
// 2) create new LRs for implicit defs in machine instructions
//---------------------------------------------------------------------------
-void LiveRangeInfo::suggestRegs4CallRets()
-{
- CallRetInstrListType::iterator It = CallRetInstrList.begin();
- for( ; It != CallRetInstrList.end(); ++It ) {
-
+void LiveRangeInfo::suggestRegs4CallRets() {
+ std::vector<MachineInstr*>::iterator It = CallRetInstrList.begin();
+ for( ; It != CallRetInstrList.end(); ++It) {
MachineInstr *MInst = *It;
- MachineOpCode OpCode = MInst->getOpCode();
+ MachineOpCode OpCode = MInst->getOpCode();
- if( (TM.getInstrInfo()).isReturn(OpCode) )
- MRI.suggestReg4RetValue( MInst, *this);
-
- else if( (TM.getInstrInfo()).isCall( OpCode ) )
- MRI.suggestRegs4CallArgs( MInst, *this);
-
+ if ((TM.getInstrInfo()).isReturn(OpCode))
+ MRI.suggestReg4RetValue(MInst, *this);
+ else if ((TM.getInstrInfo()).isCall(OpCode))
+ MRI.suggestRegs4CallArgs(MInst, *this);
else
- assert( 0 && "Non call/ret instr in CallRetInstrList" );
+ assert( 0 && "Non call/ret instr in CallRetInstrList" );
}
-
}
class Instruction;
typedef hash_map<const Value*, LiveRange*> LiveRangeMapType;
-typedef std::vector<MachineInstr*> CallRetInstrListType;
//----------------------------------------------------------------------------
// Class LiveRangeInfo
const MachineRegInfo& MRI; // machine reg info
- CallRetInstrListType CallRetInstrList; // a list of all call/ret instrs
+ std::vector<MachineInstr*> CallRetInstrList; // a list of all call/ret instrs
//------------ Private methods (see LiveRangeInfo.cpp for description)-------
// return the common live range map for this method
//
- inline const LiveRangeMapType *const getLiveRangeMap() const
+ inline const LiveRangeMapType *getLiveRangeMap() const
{ return &LiveRangeMap; }
// Method sed to get the corresponding live range of a Value
//
- inline LiveRange *getLiveRangeForValue( const Value *const Val)
+ inline LiveRange *getLiveRangeForValue( const Value *Val)
{ return LiveRangeMap[Val]; }
- // Method used to get the Call and Return instruction list
- //
- inline CallRetInstrListType &getCallRetInstrList() {
- return CallRetInstrList;
- }
-
// Method for coalescing live ranges. Called only after interference info
// is calculated.
//
// 1) suggest colors for call and return args.
// 2) create new LRs for implicit defs in machine instructions
//---------------------------------------------------------------------------
-void LiveRangeInfo::suggestRegs4CallRets()
-{
- CallRetInstrListType::iterator It = CallRetInstrList.begin();
- for( ; It != CallRetInstrList.end(); ++It ) {
-
+void LiveRangeInfo::suggestRegs4CallRets() {
+ std::vector<MachineInstr*>::iterator It = CallRetInstrList.begin();
+ for( ; It != CallRetInstrList.end(); ++It) {
MachineInstr *MInst = *It;
- MachineOpCode OpCode = MInst->getOpCode();
+ MachineOpCode OpCode = MInst->getOpCode();
- if( (TM.getInstrInfo()).isReturn(OpCode) )
- MRI.suggestReg4RetValue( MInst, *this);
-
- else if( (TM.getInstrInfo()).isCall( OpCode ) )
- MRI.suggestRegs4CallArgs( MInst, *this);
-
+ if ((TM.getInstrInfo()).isReturn(OpCode))
+ MRI.suggestReg4RetValue(MInst, *this);
+ else if ((TM.getInstrInfo()).isCall(OpCode))
+ MRI.suggestRegs4CallArgs(MInst, *this);
else
- assert( 0 && "Non call/ret instr in CallRetInstrList" );
+ assert( 0 && "Non call/ret instr in CallRetInstrList" );
}
-
}
class Instruction;
typedef hash_map<const Value*, LiveRange*> LiveRangeMapType;
-typedef std::vector<MachineInstr*> CallRetInstrListType;
//----------------------------------------------------------------------------
// Class LiveRangeInfo
const MachineRegInfo& MRI; // machine reg info
- CallRetInstrListType CallRetInstrList; // a list of all call/ret instrs
+ std::vector<MachineInstr*> CallRetInstrList; // a list of all call/ret instrs
//------------ Private methods (see LiveRangeInfo.cpp for description)-------
// return the common live range map for this method
//
- inline const LiveRangeMapType *const getLiveRangeMap() const
+ inline const LiveRangeMapType *getLiveRangeMap() const
{ return &LiveRangeMap; }
// Method sed to get the corresponding live range of a Value
//
- inline LiveRange *getLiveRangeForValue( const Value *const Val)
+ inline LiveRange *getLiveRangeForValue( const Value *Val)
{ return LiveRangeMap[Val]; }
- // Method used to get the Call and Return instruction list
- //
- inline CallRetInstrListType &getCallRetInstrList() {
- return CallRetInstrList;
- }
-
// Method for coalescing live ranges. Called only after interference info
// is calculated.
//