[all-commits] [llvm/llvm-project] 3ef98b: [DebugInfo][RemoveDIs] Support maintaining DPValue...

Jeremy Morse via All-commits all-commits at lists.llvm.org
Thu Nov 30 07:30:05 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3ef98bcd46f22d1d25f9f83f5742209f87d399d0
      https://github.com/llvm/llvm-project/commit/3ef98bcd46f22d1d25f9f83f5742209f87d399d0
  Author: Jeremy Morse <jeremy.morse at sony.com>
  Date:   2023-11-30 (Thu, 30 Nov 2023)

  Changed paths:
    M llvm/lib/CodeGen/CodeGenPrepare.cpp
    M llvm/lib/IR/BasicBlock.cpp
    M llvm/test/DebugInfo/X86/codegenprep-addrsink.ll
    A llvm/test/DebugInfo/X86/codegenprepare-rollback.ll
    M llvm/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll
    M llvm/test/Transforms/CodeGenPrepare/X86/cttz-ctlz.ll
    M llvm/test/Transforms/CodeGenPrepare/X86/select.ll
    M llvm/test/Transforms/CodeGenPrepare/sink-shift-and-trunc.ll

  Log Message:
  -----------
  [DebugInfo][RemoveDIs] Support maintaining DPValues in CodeGenPrepare (#73660)

CodeGenPrepare needs to support the maintenence of DPValues, the
non-instruction replacement for dbg.value intrinsics. This means there are
a few functions we need to duplicate or replicate the functionality of:
 * fixupDbgValue for setting users of sunk addr GEPs,
 * The remains of placeDbgValues needs a DPValue implementation for sinking
 * Rollback of RAUWs needs to update DPValues
 * Rollback of instruction removal needs supporting (see github #73350)
 * A few places where we have to use iterators rather than instructions.

There are three places where we have to use the setHeadBit call on
iterators to indicate which portion of debug-info records we're about to
splice around. This is because CodeGenPrepare, unlike other optimisation
passes, is very much concerned with which block an operation occurs in and
where in the block instructions are because it's preparing things to be in
a format that's good for SelectionDAG.

There isn't a large amount of test coverage for debuginfo behaviours in
this pass, hence I've added some more.




More information about the All-commits mailing list