summaryrefslogtreecommitdiff
path: root/gcc/rtl.texi
diff options
context:
space:
mode:
authoroldham <oldham@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-02 06:11:26 +0000
committeroldham <oldham@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-02 06:11:26 +0000
commit950ae8fec7b9131126bfb2dcec10c2624462df81 (patch)
tree15995aff0502d1a28e4aba64804b5e5410d3ac7d /gcc/rtl.texi
parent9c89b179c0ec09ec7855e0d20b13a48180809c47 (diff)
downloadgcc-950ae8fec7b9131126bfb2dcec10c2624462df81.tar.gz
2001-02-01 Jeffrey Oldham <oldham@codesourcery.com>
* dwarf2out.c: Added explanation of abbreviations. (def_cfa_1): Added comments listing DWARF2 instructions. (cfa_temp_reg): Removed in favor of cfa_temp. (cfa_temp_value): Removed in favor of cfa_temp. (cfa_temp): New global variable. (dwarf2out_frame_debug_expr): Added extensive introductory comments explaining the function's transformations. Revised to use cfa_temp. Added some rtx checking. Generalize IOR case. (dwarf2out_frame_debug): Revised to use cfa_temp. (output_aranges): Cast as "unsigned" to avoid warning. * rtl.texi (RTX_FRAME_RELATED_P): Revise entry to emphasize better explain which instructions must be marked. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39405 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/rtl.texi')
-rw-r--r--gcc/rtl.texi27
1 files changed, 23 insertions, 4 deletions
diff --git a/gcc/rtl.texi b/gcc/rtl.texi
index 6ed90f8fe77..f75ffcf1e72 100644
--- a/gcc/rtl.texi
+++ b/gcc/rtl.texi
@@ -458,10 +458,29 @@ Stored in the @code{integrated} field and printed as @samp{/i}.
@findex RTX_FRAME_RELATED_P
@item RTX_FRAME_RELATED_P (@var{x})
-Nonzero in an insn or expression which is part of a function
-prologue and sets the stack pointer, sets the frame pointer, or saves a
-register. This flag is required for exception handling support
-on targets with RTL prologues.
+Nonzero in an insn or expression which is part of a function prologue
+and sets the stack pointer, sets the frame pointer, or saves a register.
+This flag should also be set on an instruction that sets up a temporary
+register to use in place of the frame pointer.
+
+In particular, on RISC targets where there are limits on the sizes of
+immediate constants, it is sometimes impossible to reach the register
+save area directly from the stack pointer. In that case, a temporary
+register is used that is near enough to the register save area, and the
+Canonical Frame Address, i.e., DWARF2's logical frame pointer, register
+must (temporarily) be changed to be this temporary register. So, the
+instruction that sets this temporary register must be marked as
+@code{RTX_FRAME_RELATED_P}.
+
+If the marked instruction is overly complex (defined in terms of what
+@code{dwarf2out_frame_debug_expr} can handle), you will also have to
+create a @code{REG_FRAME_RELATED_EXPR} note and attach it to the
+instruction. This note should contain a simple expression of the
+computation performed by this instruction, i.e., one that
+@code{dwarf2out_frame_debug_expr} can handle.
+
+This flag is required for exception handling support on targets with RTL
+prologues.
@findex SYMBOL_REF_USED
@cindex @code{used}, in @code{symbol_ref}