diff options
Diffstat (limited to 'lib/CodeGen/RegAlloc/LiveRangeInfo.h')
-rw-r--r-- | lib/CodeGen/RegAlloc/LiveRangeInfo.h | 78 |
1 files changed, 32 insertions, 46 deletions
diff --git a/lib/CodeGen/RegAlloc/LiveRangeInfo.h b/lib/CodeGen/RegAlloc/LiveRangeInfo.h index 9e7ef06fe2..09aca44f30 100644 --- a/lib/CodeGen/RegAlloc/LiveRangeInfo.h +++ b/lib/CodeGen/RegAlloc/LiveRangeInfo.h @@ -1,44 +1,39 @@ -/* Title: LiveRangeInfo.h -*- C++ -*- - Author: Ruchira Sasanka - Date: Jun 30, 01 - Purpose: - - This file contains the class LiveRangeInfo which constructs and keeps - the LiveRangMap which contains all the live ranges used in a method. - - Assumptions: - - All variables (llvm Values) are defined before they are used. However, a - constant may not be defined in the machine instruction stream if it can be - used as an immediate value within a machine instruction. However, register - allocation does not have to worry about immediate constants since they - do not require registers. - - Since an llvm Value has a list of uses associated, it is sufficient to - record only the defs in a Live Range. - -*/ - +//===-- LiveRangeInfo.h - Track all LiveRanges for a Method ------*- C++ -*-==// +// +// This file contains the class LiveRangeInfo which constructs and keeps +// the LiveRangMap which contains all the live ranges used in a method. +// +// Assumptions: +// +// All variables (llvm Values) are defined before they are used. However, a +// constant may not be defined in the machine instruction stream if it can be +// used as an immediate value within a machine instruction. However, register +// allocation does not have to worry about immediate constants since they +// do not require registers. +// +// Since an llvm Value has a list of uses associated, it is sufficient to +// record only the defs in a Live Range. +// +//===----------------------------------------------------------------------===// #ifndef LIVE_RANGE_INFO_H #define LIVE_RANGE_INFO_H -#include "llvm/Type.h" -#include "llvm/Method.h" -#include "llvm/CodeGen/MachineInstr.h" - -#include "llvm/Analysis/LiveVar/LiveVarSet.h" - -#include "llvm/CodeGen/IGNode.h" -#include "llvm/CodeGen/LiveRange.h" -#include "llvm/CodeGen/RegClass.h" +#include "Support/HashExtras.h" +class LiveRange; +class MachineInstr; +class LiveVarSet; +class RegClass; +class MachineRegInfo; +class TargetMachine; +class Value; +class Method; +class Instruction; typedef std::hash_map<const Value*, LiveRange*> LiveRangeMapType; typedef std::vector<const MachineInstr*> CallRetInstrListType; - - //---------------------------------------------------------------------------- // Class LiveRangeInfo // @@ -46,13 +41,8 @@ typedef std::vector<const MachineInstr*> CallRetInstrListType; // ranges used in a method. Also contain methods to coalesce live ranges. //---------------------------------------------------------------------------- -class LiveRangeInfo -{ - -private: - +class LiveRangeInfo { const Method *const Meth; // Method for which live range info is held - LiveRangeMapType LiveRangeMap; // A map from Value * to LiveRange * to // record all live ranges in a method // created by constructLiveRanges @@ -96,9 +86,9 @@ public: // in machine specific code) to the common live range map // inline void addLRToMap(const Value *Val, LiveRange *LR) { - assert( Val && LR && "Val/LR is NULL!\n"); - assert( (! LiveRangeMap[ Val ]) && "LR already set in map"); - LiveRangeMap[ Val ] = LR; + assert(Val && LR && "Val/LR is NULL!\n"); + assert((!LiveRangeMap[Val]) && "LR already set in map"); + LiveRangeMap[Val] = LR; } // return the common live range map for this method @@ -109,7 +99,7 @@ public: // Method sed to get the corresponding live range of a Value // inline LiveRange *getLiveRangeForValue( const Value *const Val) - { return LiveRangeMap[ Val ]; } + { return LiveRangeMap[Val]; } // Method used to get the Call and Return instruction list // @@ -125,10 +115,6 @@ public: // debugging method to print the live ranges // void printLiveRanges(); - }; - - - #endif |