From e8f4ac2b10cc058431f534c53b7f021f492bd9c0 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 12 Nov 2008 17:02:24 +0000 Subject: [PATCH] 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 --- include/llvm/CodeGen/LiveVariables.h | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/include/llvm/CodeGen/LiveVariables.h b/include/llvm/CodeGen/LiveVariables.h index 7bbecdcdb27..f6bc83162ea 100644 --- a/include/llvm/CodeGen/LiveVariables.h +++ b/include/llvm/CodeGen/LiveVariables.h @@ -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;