* hooks.c (hook_int_void_no_regs): Rename from
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2003 17:30:05 +0000 (17:30 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2003 17:30:05 +0000 (17:30 +0000)
        hook_reg_class_void_no_regs; change return type.
        * hooks.h: Update.
        * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Update.
        * target.h (branch_target_register_class): Change return type to int.
        Add documentation.
        * config/sh/sh.c (sh_target_reg_class): Change return type.
        * doc/tm.texi (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68275 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/sh.c
gcc/doc/tm.texi
gcc/hooks.c
gcc/hooks.h
gcc/target-def.h
gcc/target.h

index 1cb9a03..99b1289 100644 (file)
@@ -1,3 +1,14 @@
+2003-06-20  Richard Henderson  <rth@redhat.com>
+
+       * hooks.c (hook_int_void_no_regs): Rename from
+       hook_reg_class_void_no_regs; change return type.
+       * hooks.h: Update.
+       * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Update.
+       * target.h (branch_target_register_class): Change return type to int.
+       Add documentation.
+       * config/sh/sh.c (sh_target_reg_class): Change return type.
+       * doc/tm.texi (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.
+
 2003-06-20  Andreas Tobler <toa@pop.agri.ch>
 
        * c-format.c: Change _Bool to bool reverting part of the last
index 1fca14f..070e409 100644 (file)
@@ -211,7 +211,7 @@ static int sh_issue_rate PARAMS ((void));
 static bool sh_function_ok_for_sibcall PARAMS ((tree, tree));
 
 static bool sh_cannot_modify_jumps_p PARAMS ((void));
-static enum reg_class sh_target_reg_class (void);
+static int sh_target_reg_class (void);
 static bool sh_optimize_target_register_callee_saved (bool);
 static bool sh_ms_bitfield_layout_p PARAMS ((tree));
 
@@ -7804,7 +7804,7 @@ sh_cannot_modify_jumps_p ()
   return (TARGET_SHMEDIA && (reload_in_progress || reload_completed));
 }
 
-static enum reg_class
+static int
 sh_target_reg_class (void)
 {
   return TARGET_SHMEDIA ? TARGET_REGS : NO_REGS;
index e4cbcad..355ea4b 100644 (file)
@@ -9134,7 +9134,7 @@ cannot_modify_jumps_past_reload_p ()
 @end smallexample
 @end deftypefn
 
-@deftypefn {Target Hook} enum reg_class TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
+@deftypefn {Target Hook} int TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
 This target hook returns a register class for which branch target register
 optimizations should be applied.  All registers in this class should be
 usable interchangably.  After reload, registers in this class will be
index 97dd2c9..e183a11 100644 (file)
@@ -41,9 +41,9 @@ hook_bool_void_false ()
   return false;
 }
 
-/* The same, but formally returning an enum reg_class.  */
-enum reg_class
-hook_reg_class_void_no_regs (void)
+/* The same, but formally returning NO_REGS.  */
+int
+hook_int_void_no_regs (void)
 {
   return NO_REGS;
 }
index e5dbcc6..044654a 100644 (file)
@@ -23,15 +23,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 #define GCC_HOOKS_H
 
 bool hook_bool_void_false PARAMS ((void));
-
-/* Check if tm.h has been included, since ISO C does not allow forward
-   definitions for enums, and making hooks.h dependent on tm.h would create
-   unnecessary dependencies where no hook declaration involving
-   enum_reg_class is needed.  */
-#ifdef REG_CLASS_CONTENTS
-enum reg_class hook_reg_class_void_no_regs (void);
-#endif
-
 bool hook_bool_bool_false (bool);
 bool hook_bool_tree_false PARAMS ((tree));
 bool hook_bool_tree_hwi_hwi_tree_false
@@ -51,6 +42,7 @@ int hook_int_tree_tree_1 PARAMS ((tree, tree));
 int hook_int_rtx_0 PARAMS ((rtx));
 int hook_int_void_0 (void);
 int hook_int_size_t_constcharptr_int_0 (size_t, const char *, int);
+int hook_int_void_no_regs (void);
 
 bool default_can_output_mi_thunk_no_vcall
   PARAMS ((tree, HOST_WIDE_INT, HOST_WIDE_INT, tree));
index d6950e4..3197022 100644 (file)
@@ -282,7 +282,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 /* In hook.c.  */
 #define TARGET_CANNOT_MODIFY_JUMPS_P hook_bool_void_false
-#define TARGET_BRANCH_TARGET_REGISTER_CLASS hook_reg_class_void_no_regs
+#define TARGET_BRANCH_TARGET_REGISTER_CLASS hook_int_void_no_regs
 #define TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED hook_bool_bool_false
 #define TARGET_CANNOT_FORCE_CONST_MEM hook_bool_rtx_false
 #define TARGET_CANNOT_COPY_INSN_P NULL
index 4ba369d..f693868 100644 (file)
@@ -296,8 +296,15 @@ struct gcc_target
      not, at the current point in the compilation.  */
   bool (* cannot_modify_jumps_p) PARAMS ((void));
 
-  enum reg_class (* branch_target_register_class) PARAMS ((void));
-  bool (* branch_target_register_callee_saved) PARAMS ((bool));
+  /* Return a register class for which branch target register
+     optimizations should be applied.  */
+  int (* branch_target_register_class) PARAMS ((void));
+
+  /* Return true if branch target register optimizations should include
+     callee-saved registers that are not already live during the current
+     function.  AFTER_PE_GEN is true if prologues and epilogues have
+     already been generated.  */
+  bool (* branch_target_register_callee_saved) PARAMS ((bool after_pe_gen));
 
   /* True if the constant X cannot be placed in the constant pool.  */
   bool (* cannot_force_const_mem) PARAMS ((rtx));