diff options
author | gbtozers <stephen.tozer@sony.com> | 2020-09-11 16:19:51 +0100 |
---|---|---|
committer | Stephen Tozer <Stephen.Tozer@Sony.com> | 2021-03-09 18:58:26 +0000 |
commit | e2196ddcdbf13aa1051e0150036e103d23a03f13 (patch) | |
tree | 2ab4571cd4f43f9cdaf7e9deef9420381a26a7bb /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | b4825a6d9c18bdb3e241d709f2f76573aba9f91b (diff) | |
download | llvm-e2196ddcdbf13aa1051e0150036e103d23a03f13.zip llvm-e2196ddcdbf13aa1051e0150036e103d23a03f13.tar.gz llvm-e2196ddcdbf13aa1051e0150036e103d23a03f13.tar.bz2 |
[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
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions