libgcc: Specialize execute_cfa_program in DWARF unwinder for alignments [redo]
commit8fdef16cd5d1b89359db3cd9a9768ab2d1b5081f
authorFlorian Weimer <fweimer@redhat.com>
Tue, 3 Jan 2023 15:47:32 +0000 (3 16:47 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Tue, 3 Jan 2023 15:47:32 +0000 (3 16:47 +0100)
tree6b44cd03f6f3e33953b8768e9eedd1cd99dcf55b
parent455acc43518744b89d6a795bbba5045bd228060b
libgcc: Specialize execute_cfa_program in DWARF unwinder for alignments [redo]

The parameters fs->data_align and fs->code_align always have fixed
values for a particular target in GCC-generated code.  Specialize
execute_cfa_program for these values, to avoid multiplications.

gcc/c-family/

* c-cppbuiltin.cc (c_cpp_builtins): Define
__LIBGCC_DWARF_CIE_DATA_ALIGNMENT__.

libgcc/

* unwind-dw2-execute_cfa.h: New file.  Extracted from
the execute_cfa_program function in unwind-dw2.c.
* unwind-dw2.c (execute_cfa_program_generic): New function.
(execute_cfa_program_specialized): Likewise.
(execute_cfa_program): Call execute_cfa_program_specialized
or execute_cfa_program_generic, as appropriate.
gcc/c-family/c-cppbuiltin.cc
libgcc/unwind-dw2-execute_cfa.h [new file with mode: 0644]
libgcc/unwind-dw2.c