[PATCH] D101500: [MachineFunction] Make comment for TracksLiveness more clearer
Guozhi Wei via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 28 17:08:58 PDT 2021
Carrot created this revision.
Carrot added a reviewer: qcolombet.
Carrot requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
As discussed in https://lists.llvm.org/pipermail/llvm-dev/2021-April/150225.html, the current comments for TracksLiveness property and isKill flag are confusing. This patch makes the comments more clearer.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D101500
Files:
llvm/include/llvm/CodeGen/MachineFunction.h
llvm/include/llvm/CodeGen/MachineOperand.h
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.
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:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101500.341359.patch
Type: text/x-patch
Size: 2470 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210429/a8e1e295/attachment.bin>
More information about the llvm-commits
mailing list