[all-commits] [llvm/llvm-project] f108c7: [GlobalISel] Allow DBG_VALUE to use undefined vreg...

Jack Andersen via All-commits all-commits at lists.llvm.org
Sun Dec 5 12:56:45 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: f108c7f59dfae5fafbb00fbdef7a0cd31826dcfc
      https://github.com/llvm/llvm-project/commit/f108c7f59dfae5fafbb00fbdef7a0cd31826dcfc
  Author: Jack Andersen <jackoalan at gmail.com>
  Date:   2021-12-05 (Sun, 05 Dec 2021)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h
    M llvm/include/llvm/CodeGen/MIRYamlMapping.h
    M llvm/include/llvm/CodeGen/MachineFunction.h
    M llvm/include/llvm/CodeGen/MachineInstr.h
    M llvm/lib/CodeGen/DeadMachineInstructionElim.cpp
    M llvm/lib/CodeGen/GlobalISel/Combiner.cpp
    M llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
    M llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
    M llvm/lib/CodeGen/GlobalISel/Utils.cpp
    M llvm/lib/CodeGen/LiveDebugVariables.cpp
    M llvm/lib/CodeGen/LiveDebugVariables.h
    M llvm/lib/CodeGen/MIRParser/MIRParser.cpp
    M llvm/lib/CodeGen/MIRPrinter.cpp
    M llvm/lib/CodeGen/MachineCombiner.cpp
    M llvm/lib/CodeGen/MachineFunction.cpp
    M llvm/lib/CodeGen/MachineInstr.cpp
    M llvm/lib/CodeGen/MachineVerifier.cpp
    M llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
    M llvm/lib/Target/NVPTX/NVPTXPeephole.cpp
    M llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
    M llvm/test/CodeGen/AArch64/GlobalISel/uaddo-8-16-bits.mir
    M llvm/test/CodeGen/AMDGPU/fold-readlane.mir
    A llvm/test/CodeGen/Generic/live-debug-vars-undef-use.mir
    A llvm/test/CodeGen/X86/GlobalISel/x86-calllowering-dbg-trunc.ll
    A llvm/test/MachineVerifier/verify-regbankselected-dbg-undef-use.mir
    A llvm/test/MachineVerifier/verify-selected-dbg-undef-use.mir

  Log Message:
  -----------
  [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




More information about the All-commits mailing list