Add live-ins to MachineBasicBlock.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34111 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2007-02-10 02:38:19 +00:00
parent 15699fc5ed
commit 13d8285678
2 changed files with 44 additions and 3 deletions

View File

@ -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