[llvm-commits] CVS: llvm/lib/CodeGen/LiveIntervals.cpp
Alkis Evlogimenos
alkis at cs.uiuc.edu
Fri Jul 9 06:11:01 PDT 2004
Changes in directory llvm/lib/CodeGen:
LiveIntervals.cpp updated: 1.86 -> 1.87
---
Log message:
Improve code comments.
---
Diffs of the changes: (+11 -5)
Index: llvm/lib/CodeGen/LiveIntervals.cpp
diff -u llvm/lib/CodeGen/LiveIntervals.cpp:1.86 llvm/lib/CodeGen/LiveIntervals.cpp:1.87
--- llvm/lib/CodeGen/LiveIntervals.cpp:1.86 Tue Jul 6 21:03:12 2004
+++ llvm/lib/CodeGen/LiveIntervals.cpp Fri Jul 9 06:10:00 2004
@@ -286,9 +286,9 @@
DEBUG(std::cerr << "\t\tregister: "; printRegName(interval.reg));
LiveVariables::VarInfo& vi = lv_->getVarInfo(interval.reg);
- // iterate over all of the blocks that the variable is completely
- // live in, adding them to the live interval. obviously we only
- // need to do this once.
+ // Iterate over all of the blocks that the variable is completely
+ // live in, adding [insrtIndex(begin), instrIndex(end)+4) to the
+ // live interval. Obviously we only need to do this once.
if (interval.empty()) {
for (unsigned i = 0, e = vi.AliveBlocks.size(); i != e; ++i) {
if (vi.AliveBlocks[i]) {
@@ -337,6 +337,8 @@
MachineBasicBlock::iterator mi,
LiveInterval& interval)
{
+ // A physical register cannot be live across basic block, so its
+ // lifetime must end somewhere in its defining basic block.
DEBUG(std::cerr << "\t\tregister: "; printRegName(interval.reg));
typedef LiveVariables::killed_iterator KillIter;
@@ -345,7 +347,9 @@
unsigned start = getDefIndex(baseIndex);
unsigned end = start;
- // a variable can be dead by the instruction defining it
+ // If it is not used after definition, it is considered dead at
+ // the instruction defining it. Hence its interval is:
+ // [defSlot(def), defSlot(def)+1)
for (KillIter ki = lv_->dead_begin(mi), ke = lv_->dead_end(mi);
ki != ke; ++ki) {
if (interval.reg == ki->second) {
@@ -355,7 +359,9 @@
}
}
- // a variable can only be killed by subsequent instructions
+ // If it is not dead on definition, it must be killed by a
+ // subsequent instruction. Hence its interval is:
+ // [defSlot(def), useSlot(def)+1)
do {
++mi;
baseIndex += InstrSlots::NUM;
More information about the llvm-commits
mailing list