aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-11-18 01:19:10 +0000
committerRichard Henderson <rth@redhat.com>2005-11-18 01:19:10 +0000
commit97a0c9fb335b4347d02f5c3339f876ae5fbd75b5 (patch)
treec03bdda31c81403f3bcd5fcf610248b9f27ee02a /gcc/doc
parentb7be57984d363e0bb205df6fa4873b71e5b58b52 (diff)
* dwarf2out.c (dw_cfi_oprnd_struct): Reduce dw_cfi_reg_num to int.
(lookup_cfa_1): Apply data alignment to DW_CFA_def_cfa_offset_sf and DW_CFA_def_cfa_sf. (def_cfa_1): Use DW_CFA_def_cfa_offset_sf with negative values. (dbx_reg_number): Don't assert particular registers here. (based_loc_descr): ... do it here instead. Fold in ... (eliminate_reg_to_offset): ... this function. (compute_frame_pointer_to_cfa_displacement): Fold in the effects of eliminate_reg_to_offset; use FRAME_POINTER_CFA_OFFSET. * unwind-dw2.c (execute_cfa_program): Apply data align factor to DW_CFA_def_cfa_offset_sf and DW_CFA_def_cfa_sf. * function.c (instantiate_new_reg): Use FRAME_POINTER_CFA_OFFSET. (instantiate_virtual_regs): Likewise. * var-tracking.c (adjust_stack_reference): Likewise. * doc/tm.texi (FRAME_POINTER_CFA_OFFSET): New. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@107154 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/doc')
-rw-r--r--gcc/doc/tm.texi15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index b339c4ccdc0..b229ee823dd 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -2926,6 +2926,21 @@ want to support call frame debugging information like that provided by
DWARF 2.
@end defmac
+@defmac FRAME_POINTER_CFA_OFFSET (@var{fundecl})
+If defined, a C expression whose value is an integer giving the offset
+in bytes from the frame pointer to the canonical frame address (cfa).
+The final value should conincide with that calculated by
+@code{INCOMING_FRAME_SP_OFFSET}.
+
+Normally the CFA is calculated as an offset from the argument pointer,
+via @code{ARG_POINTER_CFA_OFFSET}, but if the argument pointer is
+variable due to the ABI, this may not be possible. If this macro is
+defined, it imples that the virtual register instantiation should be
+based on the frame pointer instead of the argument pointer. Only one
+of @code{FRAME_POINTER_CFA_OFFSET} and @code{ARG_POINTER_CFA_OFFSET}
+should be defined.
+@end defmac
+
@node Exception Handling
@subsection Exception Handling Support
@cindex exception handling