aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/TestModuleFileExtension.cpp
diff options
context:
space:
mode:
authorJeremy Morse <jeremy.morse@sony.com>2023-11-23 12:24:15 +0000
committerGitHub <noreply@github.com>2023-11-23 12:24:15 +0000
commitce1b24330efb242172324e39099668dcc15c21f0 (patch)
tree2678a76b53ae63e56a778814836b53dc46595efa /clang/lib/Frontend/TestModuleFileExtension.cpp
parent6248c24876d81d83544af02399d46813dbea869c (diff)
downloadllvm-ce1b24330efb242172324e39099668dcc15c21f0.zip
llvm-ce1b24330efb242172324e39099668dcc15c21f0.tar.gz
llvm-ce1b24330efb242172324e39099668dcc15c21f0.tar.bz2
[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.
Diffstat (limited to 'clang/lib/Frontend/TestModuleFileExtension.cpp')
0 files changed, 0 insertions, 0 deletions