Update VarInfo's comments to reflect the current code. LiveVar

no longer records a unique defining instruction, and virtual
registers may have multiple kills while still being defined
and killed in the same block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59145 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2008-11-12 17:02:24 +00:00
parent 4974b6aae1
commit e8f4ac2b10

View File

@ -47,20 +47,17 @@ public:
/// VarInfo - This represents the regions where a virtual register is live in /// VarInfo - This represents the regions where a virtual register is live in
/// the program. We represent this with three different pieces of /// the program. We represent this with three different pieces of
/// information: the instruction that uniquely defines the value, the set of /// information: the set of blocks in which the instruction is live
/// blocks the instruction is live into and live out of, and the set of /// throughout, the set of blocks in which the instruction is actually used,
/// non-phi instructions that are the last users of the value. /// and the set of non-phi instructions that are the last users of the value.
/// ///
/// In the common case where a value is defined and killed in the same block, /// If the value is live throughout any blocks, these blocks are listed in
/// There is one killing instruction, and AliveBlocks is empty. /// AliveBlocks. Blocks where the liveness range ends are not included in
/// /// AliveBlocks, instead being captured by the Kills set. In these blocks,
/// Otherwise, the value is live out of the block. If the value is live /// the value is live into the block (unless the value is defined and killed
/// across any blocks, these blocks are listed in AliveBlocks. Blocks where /// in the same block) and lives until the specified instruction. Note that
/// the liveness range ends are not included in AliveBlocks, instead being /// there cannot ever be a value whose Kills set contains two instructions
/// captured by the Kills set. In these blocks, the value is live into the /// from the same basic block.
/// block (unless the value is defined and killed in the same block) and lives
/// until the specified instruction. Note that there cannot ever be a value
/// whose Kills set contains two instructions from the same basic block.
/// ///
/// PHI nodes complicate things a bit. If a PHI node is the last user of a /// PHI nodes complicate things a bit. If a PHI node is the last user of a
/// value in one of its predecessor blocks, it is not listed in the kills set, /// value in one of its predecessor blocks, it is not listed in the kills set,
@ -72,13 +69,13 @@ public:
/// included). This is sensical because the value must be live to the end of /// included). This is sensical because the value must be live to the end of
/// the block, but is not live in any successor blocks. /// the block, but is not live in any successor blocks.
struct VarInfo { struct VarInfo {
/// AliveBlocks - Set of blocks of which this value is alive completely /// AliveBlocks - Set of blocks in which this value is alive completely
/// through. This is a bit set which uses the basic block number as an /// through. This is a bit set which uses the basic block number as an
/// index. /// index.
/// ///
BitVector AliveBlocks; BitVector AliveBlocks;
/// UsedBlocks - Set of blocks of which this value is actually used. This /// UsedBlocks - Set of blocks in which this value is actually used. This
/// is a bit set which uses the basic block number as an index. /// is a bit set which uses the basic block number as an index.
BitVector UsedBlocks; BitVector UsedBlocks;