diff options
author | Chris Lattner <sabre@nondot.org> | 2007-12-31 04:13:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-12-31 04:13:23 +0000 |
commit | 84bc5427d6883f73cfeae3da640acd011d35c006 (patch) | |
tree | 5686c82a5bfacdb56c5e7dabbf24990d70aac8d3 /include/llvm/CodeGen/MachineFunction.h | |
parent | 8164a33856f35763bd6f0956dd74a26ef19e11b0 (diff) |
Rename SSARegMap -> MachineRegisterInfo in keeping with the idea
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineFunction.h')
-rw-r--r-- | include/llvm/CodeGen/MachineFunction.h | 62 |
1 files changed, 5 insertions, 57 deletions
diff --git a/include/llvm/CodeGen/MachineFunction.h b/include/llvm/CodeGen/MachineFunction.h index 431a1b9fcf..46d14e1484 100644 --- a/include/llvm/CodeGen/MachineFunction.h +++ b/include/llvm/CodeGen/MachineFunction.h @@ -18,16 +18,14 @@ #ifndef LLVM_CODEGEN_MACHINEFUNCTION_H #define LLVM_CODEGEN_MACHINEFUNCTION_H -#include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/Support/Annotation.h" -#include "llvm/ADT/BitVector.h" namespace llvm { class Function; class TargetMachine; -class SSARegMap; +class MachineRegisterInfo; class MachineFrameInfo; class MachineConstantPool; class MachineJumpTableInfo; @@ -83,8 +81,8 @@ class MachineFunction : private Annotation { // List of machine basic blocks in function ilist<MachineBasicBlock> BasicBlocks; - // Keeping track of mapping from SSA values to registers - SSARegMap *SSARegMapping; + // RegInfo - Information about each register in use in the function. + MachineRegisterInfo *RegInfo; // Used to keep track of target-specific per-machine function information for // the target implementation. @@ -104,21 +102,6 @@ class MachineFunction : private Annotation { // numbered and this vector keeps track of the mapping from ID's to MBB's. std::vector<MachineBasicBlock*> MBBNumbering; - /// UsedPhysRegs - This is a bit vector that is computed and set by the - /// register allocator, and must be kept up to date by passes that run after - /// register allocation (though most don't modify this). This is used - /// so that the code generator knows which callee save registers to save and - /// for other target specific uses. - BitVector UsedPhysRegs; - - /// LiveIns/LiveOuts - Keep track of the physical registers that are - /// livein/liveout of the function. Live in values are typically arguments in - /// registers, live out values are typically return values in registers. - /// LiveIn values are allowed to have virtual registers associated with them, - /// stored in the second element. - std::vector<std::pair<unsigned, unsigned> > LiveIns; - std::vector<unsigned> LiveOuts; - public: MachineFunction(const Function *Fn, const TargetMachine &TM); ~MachineFunction(); @@ -131,11 +114,9 @@ public: /// const TargetMachine &getTarget() const { return Target; } - /// SSARegMap Interface... Keep track of information about each SSA virtual - /// register, such as which register class it belongs to. + /// getRegInfo - Return information about the registers currently in use. /// - SSARegMap *getSSARegMap() const { return SSARegMapping; } - void clearSSARegMap(); + MachineRegisterInfo &getRegInfo() const { return *RegInfo; } /// getFrameInfo - Return the frame info object for the current function. /// This object contains information about objects allocated on the stack @@ -171,39 +152,6 @@ public: return const_cast<MachineFunction*>(this)->getInfo<Ty>(); } - /// isPhysRegUsed - Return true if the specified register is used in this - /// function. This only works after register allocation. - bool isPhysRegUsed(unsigned Reg) const { return UsedPhysRegs[Reg]; } - - /// setPhysRegUsed - Mark the specified register used in this function. - /// This should only be called during and after register allocation. - void setPhysRegUsed(unsigned Reg) { UsedPhysRegs[Reg] = true; } - - /// setPhysRegUnused - Mark the specified register unused in this function. - /// This should only be called during and after register allocation. - void setPhysRegUnused(unsigned Reg) { UsedPhysRegs[Reg] = false; } - - // LiveIn/LiveOut management methods. - - /// 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. - void addLiveIn(unsigned Reg, unsigned vreg = 0) { - LiveIns.push_back(std::make_pair(Reg, vreg)); - } - void addLiveOut(unsigned Reg) { LiveOuts.push_back(Reg); } - - // Iteration support for live in/out sets. These sets are kept in sorted - // order by their register number. - typedef std::vector<std::pair<unsigned,unsigned> >::const_iterator - livein_iterator; - typedef std::vector<unsigned>::const_iterator liveout_iterator; - livein_iterator livein_begin() const { return LiveIns.begin(); } - livein_iterator livein_end() const { return LiveIns.end(); } - bool livein_empty() const { return LiveIns.empty(); } - liveout_iterator liveout_begin() const { return LiveOuts.begin(); } - liveout_iterator liveout_end() const { return LiveOuts.end(); } - bool liveout_empty() const { return LiveOuts.empty(); } - /// getBlockNumbered - MachineBasicBlocks are automatically numbered when they /// are inserted into the machine function. The block number for a machine /// basic block can be found by using the MBB::getBlockNumber method, this |