summaryrefslogtreecommitdiff
path: root/gcc/target.h
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-26 19:21:16 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-26 19:21:16 +0000
commitd15ee1a58e26a69d4a56e58f6930e13e686a6c8a (patch)
treec465f270ce510064453ef668b699763e5cde22f5 /gcc/target.h
parent99a104182e185e02aa1104076ed836fe54db3efc (diff)
downloadgcc-d15ee1a58e26a69d4a56e58f6930e13e686a6c8a.tar.gz
* target.h (struct gcc_target): New field 'dwarf_handle_frame_unspec'.
* target_def.h (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to 0. (TARGET_INITIALIZER): Add TARGET_DWARF_HANDLE_FRAME_UNSPEC. * dwarf2out.c (dwarf2out_frame_debug_expr): Allow REG->REG move to a fixed reg if the source is the Return Address register. Implement new Rule 15. * doc/tm.texi (Frame Layout): Document TARGET_DWARF_HANDLE_FRAME_UNSPEC. * config/sparc/sparc.c (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to sparc_dwarf_handle_frame_unspec. (gen_save_register_window): New function. (emit_stack_pointer_increment): Rename into gen_stack_pointer_inc. (emit_stack_pointer_decrement): Rename into gen_stack_pointer_dec. (expand_prologue): Adjust calls to emit_stack_pointer_{in,de}crement. Set RTX_FRAME_RELATED_P on the appropriate insns and members of insns. (sparc_asm_function_prologue): Do not emit call frame debugging info. (emit_and_preserve): Adjust calls to emit_stack_pointer_{in,de}crement. (sparc_expand_epilogue): Likewise. (sparc_dwarf_handle_frame_unspec): New function. * config/sparc/sparc.md (save_register_window): Remove. (save_register_windowdi): Rewrite modelled on the callframe debug info. (save_register_windowsi): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91346 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/target.h')
-rw-r--r--gcc/target.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/target.h b/gcc/target.h
index 0c2b1b467f0..4927d2bab4b 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -495,6 +495,15 @@ struct gcc_target
the function is being declared as an int. */
int (* dwarf_calling_convention) (tree);
+ /* This target hook allows the backend to emit frame-related insns that
+ contain UNSPECs or UNSPEC_VOLATILEs. The call frame debugging info
+ engine will invoke it on insns of the form
+ (set (reg) (unspec [...] UNSPEC_INDEX))
+ and
+ (set (reg) (unspec_volatile [...] UNSPECV_INDEX))
+ to let the backend emit the call frame instructions. */
+ void (* dwarf_handle_frame_unspec) (const char *, rtx, int);
+
/* Functions relating to calls - argument passing, returns, etc. */
struct calls {
bool (*promote_function_args) (tree fntype);