[GlobalISel] Allow DBG_VALUE to use undefined vregs before LiveDebugValues.
authorJack Andersen <jackoalan@gmail.com>
Sun, 5 Dec 2021 19:55:20 +0000 (14:55 -0500)
committerJack Andersen <jackoalan@gmail.com>
Sun, 5 Dec 2021 20:55:59 +0000 (15:55 -0500)
commitf108c7f59dfae5fafbb00fbdef7a0cd31826dcfc
treeaa88062fe53569e594ed7e536ccb3f80736c5f80
parent1b44364714981017302f182583a43fda4d28e0eb
[GlobalISel] Allow DBG_VALUE to use undefined vregs before LiveDebugValues.

Expanding on D109750.

Since `DBG_VALUE` instructions have final register validity determined in
`LDVImpl::handleDebugValue`, there is no apparent reason to immediately prune
unused register operands as their defs are erased. Consequently, this renders
`MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval` moot; gaining a
substantial performance improvement.

The only necessary changes involve making relevant passes consider invalid
DBG_VALUE vregs uses as valid.

Reviewed By: MatzeB

Differential Revision: https://reviews.llvm.org/D112852
26 files changed:
llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h
llvm/include/llvm/CodeGen/MIRYamlMapping.h
llvm/include/llvm/CodeGen/MachineFunction.h
llvm/include/llvm/CodeGen/MachineInstr.h
llvm/lib/CodeGen/DeadMachineInstructionElim.cpp
llvm/lib/CodeGen/GlobalISel/Combiner.cpp
llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
llvm/lib/CodeGen/GlobalISel/Utils.cpp
llvm/lib/CodeGen/LiveDebugVariables.cpp
llvm/lib/CodeGen/LiveDebugVariables.h
llvm/lib/CodeGen/MIRParser/MIRParser.cpp
llvm/lib/CodeGen/MIRPrinter.cpp
llvm/lib/CodeGen/MachineCombiner.cpp
llvm/lib/CodeGen/MachineFunction.cpp
llvm/lib/CodeGen/MachineInstr.cpp
llvm/lib/CodeGen/MachineVerifier.cpp
llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
llvm/lib/Target/NVPTX/NVPTXPeephole.cpp
llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
llvm/test/CodeGen/AArch64/GlobalISel/uaddo-8-16-bits.mir
llvm/test/CodeGen/AMDGPU/fold-readlane.mir
llvm/test/CodeGen/Generic/live-debug-vars-undef-use.mir [new file with mode: 0644]
llvm/test/CodeGen/X86/GlobalISel/x86-calllowering-dbg-trunc.ll [new file with mode: 0644]
llvm/test/MachineVerifier/verify-regbankselected-dbg-undef-use.mir [new file with mode: 0644]
llvm/test/MachineVerifier/verify-selected-dbg-undef-use.mir [new file with mode: 0644]