[DebugInfo][InstrRef][NFC] Free resources at an earlier stage
commita80181a81ea44215e49e5da1457614ec0bd44111
authorJeremy Morse <jeremy.morse@sony.com>
Wed, 2 Feb 2022 12:23:52 +0000 (2 12:23 +0000)
committerJeremy Morse <jeremy.morse@sony.com>
Wed, 2 Feb 2022 12:58:15 +0000 (2 12:58 +0000)
tree0eaf8bfea0483766ba32782822466c5d43b1bc31
parent73ed118edaa6b0862ffaa4b8cba45fd184c5ea58
[DebugInfo][InstrRef][NFC] Free resources at an earlier stage

This patch releases some memory from InstrRefBasedLDV earlier that it would
otherwise. The underlying problem is:
 * We store a big table of "live in values for each block",
 * We translate that into DBG_VALUE instructions in each block,

And both exist in memory at the same time, which needlessly doubles that
information. The most of what this patch does is: as we progressively
translate live-in information into DBG_VALUEs, we free the variable-value /
machine-value tracking information as we go, which significantly reduces
peak memory.

While I'm here, also add a clear method to wipe variable assignments that
have been accumulated into VLocTracker objects, and turn a DenseMap into
a SmallDenseMap to avoid an initial allocation.

Differential Revision: https://reviews.llvm.org/D118453
llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h