Index: llvm/include/llvm/CodeGen/MachineFunction.h =================================================================== --- llvm/include/llvm/CodeGen/MachineFunction.h +++ llvm/include/llvm/CodeGen/MachineFunction.h @@ -124,11 +124,14 @@ // NoPHIs: The machine function does not contain any PHI instruction. // TracksLiveness: True when tracking register liveness accurately. // While this property is set, register liveness information in basic block - // live-in lists and machine instruction operands (e.g. kill flags, implicit - // defs) is accurate. This means it can be used to change the code in ways - // that affect the values in registers, for example by the register - // scavenger. - // When this property is clear, liveness is no longer reliable. + // live-in lists and machine instruction operands (e.g. implicit defs) is + // accurate, kill flags are conservatively accurate (kill flag correctly + // indicates the last use of a register, an operand without kill flag may or + // may not be the last use of a register). This means it can be used to + // change the code in ways that affect the values in registers, for example + // by the register scavenger. + // When this property is cleared at a very late time, liveness is no longer + // reliable. // NoVRegs: The machine function does not use any virtual registers. // Legalized: In GlobalISel: the MachineLegalizer ran and all pre-isel generic // instructions have been legalized; i.e., all instructions are now one of: Index: llvm/include/llvm/CodeGen/MachineOperand.h =================================================================== --- llvm/include/llvm/CodeGen/MachineOperand.h +++ llvm/include/llvm/CodeGen/MachineOperand.h @@ -99,8 +99,11 @@ unsigned IsImp : 1; /// IsDeadOrKill - /// For uses: IsKill - True if this instruction is the last use of the - /// register on this path through the function. + /// For uses: IsKill - Conservatively indicates the last use of a register + /// on this path through the function. A register operand with true value of + /// this flag must be the last use of the register, a register operand with + /// false value may or may not be the last use of the register. After regalloc + /// we can use recomputeLivenessFlags to get precise kill flags. /// For defs: IsDead - True if this register is never used by a subsequent /// instruction. /// This is only valid on register operands.