Commit d6da68b9 by Kazu Hirata Committed by Kazu Hirata

builtins.c (BUILTIN_SETJMP_FRAME_VALUE): Remove.

	* builtins.c (BUILTIN_SETJMP_FRAME_VALUE): Remove.
	(expand_builtin_setjmp_setup): Use
	targetm.builtin_setjmp_frame_value instead of
	BUILTIN_SETJMP_FRAME_VALUE.
	* system.h (BUILTIN_SETJMP_FRAME_VALUE): Poison.
	* target-def.h (TARGET_BUILTIN_SETJMP_FRAME_VALUE): New.
	(TARGET_INITIALIZER): Add TARGET_BUILTIN_SETJMP_FRAME_VALUE.
	* target.h (gcc_target): Add builtin_setjmp_frame_value.
	* targhooks.c (default_builtin_setjmp_frame_value): New.
	* targhooks.h: Add a prototype for
	default_builtin_setjmp_frame_value.
	* doc/tm.texi (BUILTIN_SETJMP_FRAME_VALUE): Change to
	TARGET_BUILTIN_SETJMP_FRAME_VALUE.

From-SVN: r78789
parent 59564c5e
2004-03-02 Kazu Hirata <kazu@cs.umass.edu>
* builtins.c (BUILTIN_SETJMP_FRAME_VALUE): Remove.
(expand_builtin_setjmp_setup): Use
targetm.builtin_setjmp_frame_value instead of
BUILTIN_SETJMP_FRAME_VALUE.
* system.h (BUILTIN_SETJMP_FRAME_VALUE): Poison.
* target-def.h (TARGET_BUILTIN_SETJMP_FRAME_VALUE): New.
(TARGET_INITIALIZER): Add TARGET_BUILTIN_SETJMP_FRAME_VALUE.
* target.h (gcc_target): Add builtin_setjmp_frame_value.
* targhooks.c (default_builtin_setjmp_frame_value): New.
* targhooks.h: Add a prototype for
default_builtin_setjmp_frame_value.
* doc/tm.texi (BUILTIN_SETJMP_FRAME_VALUE): Change to
TARGET_BUILTIN_SETJMP_FRAME_VALUE.
2004-03-02 Stephane Carrez <stcarrez@nerim.fr> 2004-03-02 Stephane Carrez <stcarrez@nerim.fr>
* config/m68hc11/m68hc11.md (move peephole2): New peepholes to optimize * config/m68hc11/m68hc11.md (move peephole2): New peepholes to optimize
......
...@@ -490,13 +490,9 @@ expand_builtin_setjmp_setup (rtx buf_addr, rtx receiver_label) ...@@ -490,13 +490,9 @@ expand_builtin_setjmp_setup (rtx buf_addr, rtx receiver_label)
the buffer and use the rest of it for the stack save area, which the buffer and use the rest of it for the stack save area, which
is machine-dependent. */ is machine-dependent. */
#ifndef BUILTIN_SETJMP_FRAME_VALUE
#define BUILTIN_SETJMP_FRAME_VALUE virtual_stack_vars_rtx
#endif
mem = gen_rtx_MEM (Pmode, buf_addr); mem = gen_rtx_MEM (Pmode, buf_addr);
set_mem_alias_set (mem, setjmp_alias_set); set_mem_alias_set (mem, setjmp_alias_set);
emit_move_insn (mem, BUILTIN_SETJMP_FRAME_VALUE); emit_move_insn (mem, targetm.builtin_setjmp_frame_value ());
mem = gen_rtx_MEM (Pmode, plus_constant (buf_addr, GET_MODE_SIZE (Pmode))), mem = gen_rtx_MEM (Pmode, plus_constant (buf_addr, GET_MODE_SIZE (Pmode))),
set_mem_alias_set (mem, setjmp_alias_set); set_mem_alias_set (mem, setjmp_alias_set);
......
...@@ -2853,13 +2853,13 @@ before we can access arbitrary stack frames. You will seldom need to ...@@ -2853,13 +2853,13 @@ before we can access arbitrary stack frames. You will seldom need to
define this macro. define this macro.
@end defmac @end defmac
@defmac BUILTIN_SETJMP_FRAME_VALUE @deftypefn {Target Hook} bool TARGET_BUILTIN_SETJMP_FRAME_VALUE ()
If defined, a C expression that contains an rtx that is used to store This target hook should return an rtx that is used to store
the address of the current frame into the built in @code{setjmp} buffer. the address of the current frame into the built in @code{setjmp} buffer.
The default value, @code{virtual_stack_vars_rtx}, is correct for most The default value, @code{virtual_stack_vars_rtx}, is correct for most
machines. One reason you may need to define this macro is if machines. One reason you may need to define this target hook is if
@code{hard_frame_pointer_rtx} is the appropriate value on your machine. @code{hard_frame_pointer_rtx} is the appropriate value on your machine.
@end defmac @end deftypefn
@defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr}) @defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
A C expression whose value is RTL representing the value of the return A C expression whose value is RTL representing the value of the return
......
...@@ -640,7 +640,7 @@ typedef char _Bool; ...@@ -640,7 +640,7 @@ typedef char _Bool;
MAX_WCHAR_TYPE_SIZE GCOV_TYPE_SIZE SHARED_SECTION_ASM_OP \ MAX_WCHAR_TYPE_SIZE GCOV_TYPE_SIZE SHARED_SECTION_ASM_OP \
FINAL_REG_PARM_STACK_SPACE MAYBE_REG_PARM_STACK_SPACE \ FINAL_REG_PARM_STACK_SPACE MAYBE_REG_PARM_STACK_SPACE \
TRADITIONAL_PIPELINE_INTERFACE DFA_PIPELINE_INTERFACE \ TRADITIONAL_PIPELINE_INTERFACE DFA_PIPELINE_INTERFACE \
DBX_OUTPUT_STANDARD_TYPES DBX_OUTPUT_STANDARD_TYPES BUILTIN_SETJMP_FRAME_VALUE
/* Hooks that are no longer used. */ /* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
......
...@@ -331,6 +331,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -331,6 +331,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define TARGET_DEFAULT_SHORT_ENUMS hook_bool_void_false #define TARGET_DEFAULT_SHORT_ENUMS hook_bool_void_false
#define TARGET_BUILTIN_SETJMP_FRAME_VALUE default_builtin_setjmp_frame_value
#define TARGET_PROMOTE_FUNCTION_ARGS hook_bool_tree_false #define TARGET_PROMOTE_FUNCTION_ARGS hook_bool_tree_false
#define TARGET_PROMOTE_FUNCTION_RETURN hook_bool_tree_false #define TARGET_PROMOTE_FUNCTION_RETURN hook_bool_tree_false
#define TARGET_PROMOTE_PROTOTYPES hook_bool_tree_false #define TARGET_PROMOTE_PROTOTYPES hook_bool_tree_false
...@@ -397,6 +399,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -397,6 +399,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
TARGET_GET_PCH_VALIDITY, \ TARGET_GET_PCH_VALIDITY, \
TARGET_PCH_VALID_P, \ TARGET_PCH_VALID_P, \
TARGET_DEFAULT_SHORT_ENUMS, \ TARGET_DEFAULT_SHORT_ENUMS, \
TARGET_BUILTIN_SETJMP_FRAME_VALUE, \
TARGET_HAVE_NAMED_SECTIONS, \ TARGET_HAVE_NAMED_SECTIONS, \
TARGET_HAVE_CTORS_DTORS, \ TARGET_HAVE_CTORS_DTORS, \
TARGET_HAVE_TLS, \ TARGET_HAVE_TLS, \
......
...@@ -421,6 +421,10 @@ struct gcc_target ...@@ -421,6 +421,10 @@ struct gcc_target
that type. */ that type. */
bool (* default_short_enums) (void); bool (* default_short_enums) (void);
/* This target hook returns an rtx that is used to store the address
of the current frame into the built in @code{setjmp} buffer. */
rtx (* builtin_setjmp_frame_value) (void);
/* Leave the boolean fields at the end. */ /* Leave the boolean fields at the end. */
/* True if arbitrary sections are supported. */ /* True if arbitrary sections are supported. */
......
...@@ -105,6 +105,14 @@ default_setup_incoming_varargs (CUMULATIVE_ARGS *ca ATTRIBUTE_UNUSED, ...@@ -105,6 +105,14 @@ default_setup_incoming_varargs (CUMULATIVE_ARGS *ca ATTRIBUTE_UNUSED,
{ {
} }
/* The default implementation of TARGET_BUILTIN_SETJMP_FRAME_VALUE. */
rtx
default_builtin_setjmp_frame_value (void)
{
return virtual_stack_vars_rtx;
}
/* Generic hook that takes a CUMULATIVE_ARGS pointer and returns true. */ /* Generic hook that takes a CUMULATIVE_ARGS pointer and returns true. */
bool bool
......
...@@ -27,6 +27,7 @@ extern bool default_return_in_memory (tree, tree); ...@@ -27,6 +27,7 @@ extern bool default_return_in_memory (tree, tree);
extern rtx default_expand_builtin_saveregs (void); extern rtx default_expand_builtin_saveregs (void);
extern void default_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode, tree, int *, int); extern void default_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode, tree, int *, int);
extern rtx default_builtin_setjmp_frame_value (void);
extern bool hook_bool_CUMULATIVE_ARGS_false (CUMULATIVE_ARGS *); extern bool hook_bool_CUMULATIVE_ARGS_false (CUMULATIVE_ARGS *);
extern bool default_pretend_outgoing_varargs_named (CUMULATIVE_ARGS *); extern bool default_pretend_outgoing_varargs_named (CUMULATIVE_ARGS *);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment