aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/MachineFunction.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/CodeGen/MachineFunction.h')
-rw-r--r--include/llvm/CodeGen/MachineFunction.h62
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