diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2004-11-26 20:21:16 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2004-11-26 19:21:16 +0000 |
commit | e54c7471819ee8dc9e4ba0ada1db242bd5bd68ed (patch) | |
tree | c465f270ce510064453ef668b699763e5cde22f5 /gcc/target.h | |
parent | 077094ace3c976aafd620af5f4291389e0b4e0e4 (diff) | |
download | gcc-e54c7471819ee8dc9e4ba0ada1db242bd5bd68ed.zip gcc-e54c7471819ee8dc9e4ba0ada1db242bd5bd68ed.tar.gz gcc-e54c7471819ee8dc9e4ba0ada1db242bd5bd68ed.tar.bz2 |
target.h (struct gcc_target): New field 'dwarf_handle_frame_unspec'.
* 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.
From-SVN: r91346
Diffstat (limited to 'gcc/target.h')
-rw-r--r-- | gcc/target.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/target.h b/gcc/target.h index 0c2b1b4..4927d2b 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); |