diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-20 17:30:05 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-20 17:30:05 +0000 |
commit | e26dbf6d528736a8db78916c975a5068eae282dc (patch) | |
tree | 73514e4f64d84936d90b75c8a73e6fd5958b4ab8 | |
parent | d19a6ea01fb5f35c0e3d9fb5b6b7fa3d9d119e5b (diff) | |
download | gcc-e26dbf6d528736a8db78916c975a5068eae282dc.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68275 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 4 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 2 | ||||
-rw-r--r-- | gcc/hooks.c | 6 | ||||
-rw-r--r-- | gcc/hooks.h | 10 | ||||
-rw-r--r-- | gcc/target-def.h | 2 | ||||
-rw-r--r-- | gcc/target.h | 11 |
7 files changed, 28 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1cb9a03091f..99b1289d4f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 1fca14fbc60..070e4093e20 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -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; diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index e4cbcadf195..355ea4bb326 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -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 diff --git a/gcc/hooks.c b/gcc/hooks.c index 97dd2c9b828..e183a11766e 100644 --- a/gcc/hooks.c +++ b/gcc/hooks.c @@ -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; } diff --git a/gcc/hooks.h b/gcc/hooks.h index e5dbcc6eebc..044654acb38 100644 --- a/gcc/hooks.h +++ b/gcc/hooks.h @@ -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)); diff --git a/gcc/target-def.h b/gcc/target-def.h index d6950e4b348..31970222cf1 100644 --- a/gcc/target-def.h +++ b/gcc/target-def.h @@ -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 diff --git a/gcc/target.h b/gcc/target.h index 4ba369d7d3e..f693868eb57 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -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)); |