diff options
author | Florian Weimer <fweimer@redhat.com> | 2022-10-17 11:09:17 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2022-10-17 11:09:17 +0200 |
commit | acdb24166d13d87c374e578d2ad5d58249171930 (patch) | |
tree | 7a3873bfa4596970c812f73211a07699399376b3 /libgcc | |
parent | 0f4815502d8dac07579dc7a5a40c597a18291b4c (diff) | |
download | gcc-acdb24166d13d87c374e578d2ad5d58249171930.zip gcc-acdb24166d13d87c374e578d2ad5d58249171930.tar.gz gcc-acdb24166d13d87c374e578d2ad5d58249171930.tar.bz2 |
libgcc: Move cfa_how into potential padding in struct frame_state_reg_info
On many architectures, there is a padding gap after the how array
member, and cfa_how can be moved there. This reduces the size of the
struct and the amount of memory that uw_frame_state_for has to clear.
There is no measurable performance benefit from this on x86-64 (even
though the memset goes from 120 to 112 bytes), but it seems to be a
good idea to do anyway.
libgcc/
* unwind-dw2.h (struct frame_state_reg_info): Move cfa_how member
and reduce its size.
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/unwind-dw2.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libgcc/unwind-dw2.h b/libgcc/unwind-dw2.h index af34e00..a0834b1 100644 --- a/libgcc/unwind-dw2.h +++ b/libgcc/unwind-dw2.h @@ -50,6 +50,12 @@ typedef struct } reg[__LIBGCC_DWARF_FRAME_REGISTERS__+1]; unsigned char how[__LIBGCC_DWARF_FRAME_REGISTERS__+1]; + enum { + CFA_UNSET, + CFA_REG_OFFSET, + CFA_EXP + } cfa_how : 8; + /* Used to implement DW_CFA_remember_state. */ struct frame_state_reg_info *prev; @@ -58,11 +64,6 @@ typedef struct _Unwind_Sword cfa_offset; _Unwind_Word cfa_reg; const unsigned char *cfa_exp; - enum { - CFA_UNSET, - CFA_REG_OFFSET, - CFA_EXP - } cfa_how; } regs; /* The PC described by the current frame state. */ |