aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorgbtozers <stephen.tozer@sony.com>2020-09-11 16:19:51 +0100
committerStephen Tozer <Stephen.Tozer@Sony.com>2021-03-09 18:58:26 +0000
commite2196ddcdbf13aa1051e0150036e103d23a03f13 (patch)
tree2ab4571cd4f43f9cdaf7e9deef9420381a26a7bb /clang/lib/Frontend/CompilerInvocation.cpp
parentb4825a6d9c18bdb3e241d709f2f76573aba9f91b (diff)
downloadllvm-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