llvm-project/llvm/lib/CodeGen/LiveDebugValues
gbtozers e2196ddcdb [DebugInfo] Process DBG_VALUE_LIST in LiveDebugValues
This patch implements DBG_VALUE_LIST handling to the LiveDebugValues pass. This
is a substantial change, and makes a few fundamental changes to the existing
logic.

We still use the basic model of a VarLocMap that is indexed by a LocIndex, with
a VarLocSet (a CoalescingBitVector underneath) giving us efficient lookups of
existing variable locations for a given location type. The main change is that
the VarLocMap may contain a given VarLoc multiple times (once for each unique
location operand), so that a VarLoc can be looked up from any of the registers
that it uses. This means that each VarLoc has multiple corresponding LocIndexes;
to allow us to iterate through the set of VarLocs (previously we would iterate
through the VarLocSet), we now also maintain a single entry in the VarLocMap
that contains every VarLoc exactly once.

The VarLoc class itself is also changed; this change is much simpler,
refactoring out location-specific members into a MachineLocation class and
adding a vector of these locations.

Differential Revision: https://reviews.llvm.org/D83890
2021-03-09 18:58:26 +00:00
..
InstrRefBasedImpl.cpp [CodeGen] Use range-based for loops (NFC) 2021-02-13 20:41:39 -08:00
LiveDebugValues.cpp [LiveDebugValues] Add switches for using instr-ref variable locations 2020-08-25 14:58:48 +01:00
LiveDebugValues.h [llvm] Add missing header guards (NFC) 2021-01-30 09:53:42 -08:00
VarLocBasedImpl.cpp [DebugInfo] Process DBG_VALUE_LIST in LiveDebugValues 2021-03-09 18:58:26 +00:00