diff options
author | Jeremy Morse <jeremy.morse@sony.com> | 2024-02-08 11:49:04 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-08 11:49:04 +0000 |
commit | a643ab852a63a14dba86e031247734c5e3d5adb9 (patch) | |
tree | 2e35912535facac15e22ed8f19e19e5d0d409369 /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | b35c5197629494cb675948fe33d2fdcd75b5aafa (diff) | |
download | llvm-a643ab852a63a14dba86e031247734c5e3d5adb9.zip llvm-a643ab852a63a14dba86e031247734c5e3d5adb9.tar.gz llvm-a643ab852a63a14dba86e031247734c5e3d5adb9.tar.bz2 |
[DebugInfo][RemoveDIs] Final omnibus test fixing for RemoveDIs (#81125)
With this, I get a clean test suite running under RemoveDIs, the
non-intrinsic representation of debug-info, including under asan. We've
previously established that we generate identical binaries for some
large projects, so this i just edge-case cleanup. The changes:
* CodeGenPrepare fixups need to apply to dbg.assigns as well as
dbg.values (a dbg.assign is a dbg.value).
* Pin a test for constant-deletion to intrinsic debug-info: this very
rare scenario uses a different kill-location sigil in dbg.value mode to
RemoveDIs mode, which generates spurious test differences.
* Suppress a memory leak in a unit test: the code for dealing with
trailing debug-info in a block is necessarily fiddly, leading to this
leak when testing it. Developer-facing interfaces for moving
instructions around always deal with this behind the scenes.
* SROA, when replacing some vector-loads, needs to insert the
replacement loads ahead of any debug-info records so that their values
remain dominated by a definition. Set the head-bit indicating our
insertion should come before debug-info.
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 5383b15..09c4922 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -8455,7 +8455,8 @@ bool CodeGenPrepare::fixupDPValuesOnInst(Instruction &I) { // FIXME: should updating debug-info really cause the "changed" flag to fire, // which can cause a function to be reprocessed? bool CodeGenPrepare::fixupDPValue(DPValue &DPV) { - if (DPV.Type != DPValue::LocationType::Value) + if (DPV.Type != DPValue::LocationType::Value && + DPV.Type != DPValue::LocationType::Assign) return false; // Does this DPValue refer to a sunk address calculation? |