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
/// the program. We represent this with three different pieces of
/// information: the instruction that uniquely defines the value, the set of
/// blocks the instruction is live into and live out of, and the set of
/// non-phi instructions that are the last users of the value.
/// information: the set of blocks in which the instruction is live
/// throughout, the set of blocks in which the instruction is actually used,
/// 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,
/// There is one killing instruction, and AliveBlocks is empty.
///
/// Otherwise, the value is live out of the block. If the value is live
/// across any blocks, these blocks are listed in AliveBlocks. Blocks where
/// the liveness range ends are not included in AliveBlocks, instead being
/// captured by the Kills set. In these blocks, the value is live into the
/// 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.
/// If the value is live throughout any blocks, these blocks are listed in
/// AliveBlocks. Blocks where the liveness range ends are not included in
/// AliveBlocks, instead being captured by the Kills set. In these blocks,
/// the value is live into the 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
/// 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
/// the block, but is not live in any successor blocks.
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
/// index.
///
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.
BitVector UsedBlocks;