This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
unreviewed patch: target register load optimization
- From: Joern Rennecke <joern dot rennecke at superh dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 02 May 2003 19:50:04 +0100
- Subject: unreviewed patch: target register load optimization
- Organization: SuperH UK Ltd.
http://gcc.gnu.org/ml/gcc-patches/2003-03/msg00349.html
Fri Feb 21 21:02:01 2003 Stephen Clarke <stephen.clarke@superh.com>
J"orn Rennecke <joern.rennecke@superh.com>
* late-loop.c: New file.
* Makefile.in (OBJS): Include late-loop.o
(late-loop.o): Add dependencies.
* flags.h (flag_optimize_target_registers): Declare.
(flag_optimize_target_registers_2): Likewise.
* hooks.c (hook_reg_class_void_no_regs): New function.
(hook_bool_bool_false): Likewise.
* hooks.h (hook_reg_class_void_no_regs, hook_bool_bool_false): Declare.
* rtl.h (target_registers_optimize): Declare.
* target-def.h (TARGET_OPTIMIZE_TARGET_REGISTER_CLASS): Define.
(TARGET_OPTIMIZE_TARGET_REGISTER_CALLEE_SAVED): Likewise.
(TARGET_INITIALIZER): Include these.
* target.h (struct gcc_target): Add optimize_target_register_class
and optimize_target_register_callee_saved members.
* toplev.c (enum dump_file_index): Add DFI_targetregs.
(dump_file) Add "tars" entry.
(flag_optimize_target_registers): New variable.
(flag_optimize_target_registers_2): Likewise.
(lang_independent_options): Add entries for new options.
(rest_of_compilation): Call target_registers_optimize.
* doc/tm.texi (TARGET_OPTIMIZE_TARGET_REGISTER_CLASS): Document.
(TARGET_OPTIMIZE_TARGET_REGISTER_CALLEE_SAVED): Likewise.
* doc/invoke.texi: Document -foptimize-target-registers and
-foptimize-target-registers-2.
* sh.c (shmedia_space_reserved_for_target_registers): New variable.
(sh_target_reg_class): New function.
(sh_optimize_target_register_callee_saved): Likwise.
(shmedia_target_regs_stack_space): Likewise.
(shmedia_reserve_space_for_target_registers_p): Likewise.
(shmedia_target_regs_stack_adjust): Likewise.
(TARGET_OPTIMIZE_TARGET_REGISTER_CLASS): Override.
(TARGET_OPTIMIZE_TARGET_REGISTER_CALLEE_SAVED): Likewise.
(calc_live_regs): If flag_optimize_target_registers_2 and
TARGET_SAVE_ALL_TARGET_REGS is enabled, and we have space reserved
for target registers, make sure that we save all target registers.
(sh_expand_prologue, sh_expand_epilogue): Take target register
optimizations into account. Collapse stack adjustments if that
is beneficial.
(initial_elimination_offset): Reserve space for target registers
if necessary.
* sh.h (SAVE_ALL_TR_BIT, TARGET_SAVE_ALL_TARGET_REGS): Define.
(OPTIMIZATION_OPTIONS): Enable flag_optimize_target_registers.
--
--------------------------
SuperH (UK) Ltd.
2410 Aztec West / Almondsbury / BRISTOL / BS32 4QX
T:+44 1454 465658