summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/Globals.cpp
diff options
context:
space:
mode:
authorDavid Stenberg <david.stenberg@ericsson.com>2019-10-15 11:14:35 +0000
committerDavid Stenberg <david.stenberg@ericsson.com>2019-10-15 11:14:35 +0000
commit284827f32bd8d06ca1ab8a949bf96088612b1504 (patch)
treee19ddc0a5f58e56fb28a1e08069a3cbc6479c659 /llvm/lib/IR/Globals.cpp
parent70778444c7838a13ea0a8c315ad6c1830cb6b41c (diff)
downloadbcm5719-llvm-284827f32bd8d06ca1ab8a949bf96088612b1504.tar.gz
bcm5719-llvm-284827f32bd8d06ca1ab8a949bf96088612b1504.zip
[DebugInfo] Add interface for pre-calculating the size of emitted DWARF
Summary: DWARF's DW_OP_entry_value operation has two operands; the first is a ULEB128 operand that specifies the size of the second operand, which is a DWARF block. This means that we need to be able to pre-calculate and emit the size of DWARF expressions before emitting them. There is currently no interface for doing this in DwarfExpression, so this patch introduces that. When implementing this I initially thought about running through DwarfExpression's emission two times; first with a temporary buffer to emit the expression, in order to being able to calculate the size of that emitted data. However, DwarfExpression is a quite complex state machine, so I decided against that, as it seemed like the two runs could get out of sync, resulting in incorrect size operands. Therefore I have implemented this in a way that we only have to run DwarfExpression once. The idea is to emit DWARF to a temporary buffer, for which it is possible to query the size. The data in the temporary buffer can then be emitted to DwarfExpression's main output. In the case of DIEDwarfExpression, a temporary DIE is used. The values are all allocated using the same BumpPtrAllocator as for all other DIEs, and the values are then transferred to the real value list. In the case of DebugLocDwarfExpression, the temporary buffer is implemented using a BufferByteStreamer which emits to a buffer in the DwarfExpression object. Reviewers: aprantl, vsk, NikolaPrica, djtodoro Reviewed By: aprantl Subscribers: hiraditya, llvm-commits Tags: #debug-info, #llvm Differential Revision: https://reviews.llvm.org/D67768 llvm-svn: 374879
Diffstat (limited to 'llvm/lib/IR/Globals.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud