diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-01-23 22:13:36 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-01-23 22:13:36 +0000 | 
| commit | 1def519f3d80946a37bd62f076950fb6dcfe84f5 (patch) | |
| tree | a967b618d7190bdf3024346b04be52f452630937 | |
| parent | ef2de322c6e1b3171639420ef55182a07e773795 (diff) | |
| download | bcm5719-llvm-1def519f3d80946a37bd62f076950fb6dcfe84f5.tar.gz bcm5719-llvm-1def519f3d80946a37bd62f076950fb6dcfe84f5.zip | |
Expose more information from register allocation to passes that run after
it.
llvm-svn: 19788
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineFunction.h | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h index e6d9eb1bf81..94e9470b767 100644 --- a/llvm/include/llvm/CodeGen/MachineFunction.h +++ b/llvm/include/llvm/CodeGen/MachineFunction.h @@ -97,6 +97,13 @@ 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 new[]'d array of bools 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. +  bool *UsedPhysRegs; +  public:    MachineFunction(const Function *Fn, const TargetMachine &TM);    ~MachineFunction(); @@ -138,6 +145,25 @@ public:      return static_cast<Ty*>(MFInfo);    } +  /// setUsedPhysRegs - The register allocator should call this to initialized +  /// the UsedPhysRegs set.  This should be passed a new[]'d array with entries +  /// for all of the physical registers that the target supports.  Each array +  /// entry should be set to true iff the physical register is used within the +  /// function. +  void setUsedPhysRegs(bool *UPR) { UsedPhysRegs = UPR; } + +  /// getUsedPhysregs - This returns the UsedPhysRegs array.  This returns null +  /// before register allocation. +  const bool *getUsedPhysregs() { return UsedPhysRegs; } + +  /// isPhysRegUsed - Return true if the specified register is used in this +  /// function.  This only works after register allocation. +  bool isPhysRegUsed(unsigned Reg) { return UsedPhysRegs[Reg]; } + +  /// changePhyRegUsed - This method allows code that runs after register +  /// allocation to keep the PhysRegsUsed array up-to-date. +  void changePhyRegUsed(unsigned Reg, bool State) { UsedPhysRegs[Reg] = State; } +    /// 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 | 

