mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-28 17:06:31 +00:00
On a 64-bit system, the DWARFDebugLine::Row struct is 32 bytes. Each field has the following byte offsets:
0-7: Address 8-11: Line 12-13: Column 14-15: File 16-19: Isa 20-23: Discriminator 24+: bit fields The packing is fine until the "Isa" field, which is an 8-bit int that occupies 4 bytes. We can instead move Discriminator into the 16-19 slot, and pack Isa into the 20-23 range along with the bit fields: 0-7: Address 8-11: Line 12-13: Column 14-15: File 16-19: Discriminator 20-23: Isa + bit fields This layout is only 24 bytes. This 25% reduction in size may seem small but a large binary can have line tables with thousands of rows stored in a vector. Patch by Simon Que! Differential Revision: https://reviews.llvm.org/D27961 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@290931 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc80c5c073
commit
fdd19a37e7
@ -116,12 +116,12 @@ public:
|
||||
// An unsigned integer indicating the identity of the source file
|
||||
// corresponding to a machine instruction.
|
||||
uint16_t File;
|
||||
// An unsigned integer whose value encodes the applicable instruction set
|
||||
// architecture for the current instruction.
|
||||
uint8_t Isa;
|
||||
// An unsigned integer representing the DWARF path discriminator value
|
||||
// for this location.
|
||||
uint32_t Discriminator;
|
||||
// An unsigned integer whose value encodes the applicable instruction set
|
||||
// architecture for the current instruction.
|
||||
uint8_t Isa;
|
||||
// A boolean indicating that the current instruction is the beginning of a
|
||||
// statement.
|
||||
uint8_t IsStmt:1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user