]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
builtins.c (BUILTIN_SETJMP_FRAME_VALUE): Remove.
authorKazu Hirata <kazu@cs.umass.edu>
Tue, 2 Mar 2004 22:32:27 +0000 (22:32 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Tue, 2 Mar 2004 22:32:27 +0000 (22:32 +0000)
* 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

gcc/ChangeLog
gcc/builtins.c
gcc/doc/tm.texi
gcc/system.h
gcc/target-def.h
gcc/target.h
gcc/targhooks.c
gcc/targhooks.h

index a1782ba302f0298b2b7b4f0bc1dc80a3d34bd0cf..eed83b2628b2ccabeea131e6e1ea1b9b395d19c5 100644 (file)
@@ -1,3 +1,19 @@
+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>
 
        * config/m68hc11/m68hc11.md (move peephole2): New peepholes to optimize
index aa8b090f357db5050615d4e40bd8294b800420af..291e605fcb954326a34d43c1eccb1b08f1fc6fb9 100644 (file)
@@ -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
      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);
   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))),
   set_mem_alias_set (mem, setjmp_alias_set);
index 1658c27b232ef04b70a1d8f3635dbc373e21f187..3d253a1a28f924a6f88fed5dae86298072ef32b4 100644 (file)
@@ -2853,13 +2853,13 @@ before we can access arbitrary stack frames.  You will seldom need to
 define this macro.
 @end defmac
 
-@defmac BUILTIN_SETJMP_FRAME_VALUE
-If defined, a C expression that contains an rtx that is used to store
+@deftypefn {Target Hook} bool TARGET_BUILTIN_SETJMP_FRAME_VALUE ()
+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 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.
-@end defmac
+@end deftypefn
 
 @defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
 A C expression whose value is RTL representing the value of the return
index 599435429d9535cf877653b96fa163f463036733..8d91547fe986deacc12a07008cb64fd531141ba4 100644 (file)
@@ -640,7 +640,7 @@ typedef char _Bool;
        MAX_WCHAR_TYPE_SIZE GCOV_TYPE_SIZE SHARED_SECTION_ASM_OP           \
        FINAL_REG_PARM_STACK_SPACE MAYBE_REG_PARM_STACK_SPACE              \
        TRADITIONAL_PIPELINE_INTERFACE DFA_PIPELINE_INTERFACE              \
-       DBX_OUTPUT_STANDARD_TYPES
+       DBX_OUTPUT_STANDARD_TYPES BUILTIN_SETJMP_FRAME_VALUE
 
 /* Hooks that are no longer used.  */
  #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE  \
index 0b35bc1855a2485a4c911ef14ab921d9c8f5e3c4..9b04c3032164726cff0b08f8883760c59e2fe105 100644 (file)
@@ -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_BUILTIN_SETJMP_FRAME_VALUE default_builtin_setjmp_frame_value
+
 #define TARGET_PROMOTE_FUNCTION_ARGS hook_bool_tree_false
 #define TARGET_PROMOTE_FUNCTION_RETURN 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.
   TARGET_GET_PCH_VALIDITY,                     \
   TARGET_PCH_VALID_P,                          \
   TARGET_DEFAULT_SHORT_ENUMS,                  \
+  TARGET_BUILTIN_SETJMP_FRAME_VALUE,           \
   TARGET_HAVE_NAMED_SECTIONS,                  \
   TARGET_HAVE_CTORS_DTORS,                     \
   TARGET_HAVE_TLS,                             \
index 67cf25da0f6e616ff38cd5b0d4141d0201912e82..858c82ad31af8f76e23a5a6825e66c2e55cc62e6 100644 (file)
@@ -421,6 +421,10 @@ struct gcc_target
      that type.  */
   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.  */
 
   /* True if arbitrary sections are supported.  */
index 03735a64edaf480831d4282a2046cbd59e082b24..c93a1a8ec6626bbc091a73d71788f95e17087ffd 100644 (file)
@@ -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.  */
 
 bool
index f755b0f19b543756a8bbbb10ba46536c729ae4d7..f90d6b3612cfceb76dbc91e77f29526ab4514d69 100644 (file)
@@ -27,6 +27,7 @@ extern bool default_return_in_memory (tree, tree);
 
 extern rtx default_expand_builtin_saveregs (void);
 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 default_pretend_outgoing_varargs_named (CUMULATIVE_ARGS *);