[all-commits] [llvm/llvm-project] ce1b24: [DebugInfo][RemoveDIs] Instrument loop-deletion fo...

Jeremy Morse via All-commits all-commits at lists.llvm.org
Thu Nov 23 04:24:29 PST 2023


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

  Changed paths:
    M llvm/lib/Transforms/Utils/LoopUtils.cpp
    M llvm/test/Transforms/LoopDeletion/crashbc.ll
    M llvm/test/Transforms/LoopDeletion/diundef.ll
    M llvm/test/Transforms/LoopDeletion/over-defensive-undefing-dbg-values.ll

  Log Message:
  -----------
  [DebugInfo][RemoveDIs] Instrument loop-deletion for DPValues (#73042)

Loop deletion identifies dbg.value intrinsics in the loop, sets them to
undef/poison, and sinks them to the exit of the loop, to ensure that any
variable assignments that happen in a deleted loop are "optimised out".
This needs to be replicated for DPValues, the non-instruction
replacement for dbg.value intrinsics.

The movement API for DPValues is (deliberately) more limited than
dbg.values, which is tricky because inserting the collection of
dbg.values at an arbitrary iterator can insert a dbg.value in the middle
of a sequence of dbg.values. A big no-no for DPValues. This patch
replicates the order by inserting DPValues in reverse at the
head-iterator of the block, to ensure the same output as dbg.value mode.
Technically the order isn't important, but we're trying to ensure
identical outputs from optimisation passes right now.

Add more CHECK lines for dbg.values in diundef.ll to ensure that we
don't create any spurious dbg.values, and to ensure that sequences of
dbg.values come out of the optimisation in the correct order.




More information about the All-commits mailing list