diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-02-10 02:38:19 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-02-10 02:38:19 +0000 |
commit | 13d828567812041c1ca1817f4b66fce840903a1f (patch) | |
tree | 7e89ea521f9934a435c6420e6105a951b1f486fb /include/llvm/CodeGen/MachineBasicBlock.h | |
parent | 15699fc5ed0378205f9705d35d019d9ff0cf200d (diff) |
Add live-ins to MachineBasicBlock.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34111 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineBasicBlock.h')
-rw-r--r-- | include/llvm/CodeGen/MachineBasicBlock.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/MachineBasicBlock.h b/include/llvm/CodeGen/MachineBasicBlock.h index 1fd36ed55a..142f8d8fa6 100644 --- a/include/llvm/CodeGen/MachineBasicBlock.h +++ b/include/llvm/CodeGen/MachineBasicBlock.h @@ -63,11 +63,18 @@ public: Instructions Insts; MachineBasicBlock *Prev, *Next; const BasicBlock *BB; - std::vector<MachineBasicBlock *> Predecessors; - std::vector<MachineBasicBlock *> Successors; int Number; MachineFunction *Parent; + /// Predecessors/Successors - Keep track of the predecessor / successor + /// basicblocks. + std::vector<MachineBasicBlock *> Predecessors; + std::vector<MachineBasicBlock *> Successors; + + /// LiveIns - Keep track of the physical registers that are livein of + /// the basicblock. + std::vector<unsigned> LiveIns; + public: MachineBasicBlock(const BasicBlock *bb = 0) : Prev(0), Next(0), BB(bb), Number(-1), Parent(0) { @@ -125,6 +132,19 @@ public: unsigned succ_size() const { return Successors.size(); } bool succ_empty() const { return Successors.empty(); } + // LiveIn management methods. + + /// addLiveIn - Add the specified register as a live in. Note that it + /// is an error to add the same register to the same set more than once. + void addLiveIn(unsigned Reg) { LiveIns.push_back(Reg); } + + // Iteration support for live in sets. These sets are kept in sorted + // order by their register number. + typedef std::vector<unsigned>::const_iterator livein_iterator; + livein_iterator livein_begin() const { return LiveIns.begin(); } + livein_iterator livein_end() const { return LiveIns.end(); } + bool livein_empty() const { return LiveIns.empty(); } + // Code Layout methods. /// moveBefore/moveAfter - move 'this' block before or after the specified |