defaults.h (MAX_MOVE_MAX, [...]): Define if not defined.

gcc/
	* defaults.h (MAX_MOVE_MAX, MIN_UNITS_PER_WORD): Define if not defined.
	* libgcc2.c (MIN_UNITS_PER_WORD): Delete.
	* hard-reg-set.h (target_hard_regs): Add x_no_caller_save_reg_set.
	(no_caller_save_reg_set): Redefine as a macro.
	* reload.h (target_reload): Add x_caller_save_initialized_p and
	x_regno_save_mode.
	(caller_save_initialized_p): Redefine as a macro.
	* caller-save.c (caller_save_initialized_p, no_caller_save_reg_set)
	(MAX_MOVE_MAX, MIN_UNITS_PER_WORD): Delete.
	(regno_save_mode): Redefine as a macro.

From-SVN: r162095
This commit is contained in:
Richard Sandiford 2010-07-12 18:54:17 +00:00 committed by Richard Sandiford
parent 462f85cedc
commit bcbaaba1a3
6 changed files with 42 additions and 34 deletions

View File

@ -1,3 +1,16 @@
2010-07-12 Richard Sandiford <rdsandiford@googlemail.com>
* defaults.h (MAX_MOVE_MAX, MIN_UNITS_PER_WORD): Define if not defined.
* libgcc2.c (MIN_UNITS_PER_WORD): Delete.
* hard-reg-set.h (target_hard_regs): Add x_no_caller_save_reg_set.
(no_caller_save_reg_set): Redefine as a macro.
* reload.h (target_reload): Add x_caller_save_initialized_p and
x_regno_save_mode.
(caller_save_initialized_p): Redefine as a macro.
* caller-save.c (caller_save_initialized_p, no_caller_save_reg_set)
(MAX_MOVE_MAX, MIN_UNITS_PER_WORD): Delete.
(regno_save_mode): Redefine as a macro.
2010-07-12 Richard Sandiford <rdsandiford@googlemail.com>
* Makefile.in (expmed.o, target-globals.o): Depend on expmed.h.

View File

@ -41,30 +41,10 @@ along with GCC; see the file COPYING3. If not see
#include "output.h"
#include "ggc.h"
/* True if caller-save has been initialized. */
bool caller_save_initialized_p;
/* Call used hard registers which can not be saved because there is no
insn for this. */
HARD_REG_SET no_caller_save_reg_set;
#ifndef MAX_MOVE_MAX
#define MAX_MOVE_MAX MOVE_MAX
#endif
#ifndef MIN_UNITS_PER_WORD
#define MIN_UNITS_PER_WORD UNITS_PER_WORD
#endif
#define MOVE_MAX_WORDS (MOVE_MAX / UNITS_PER_WORD)
/* Modes for each hard register that we can save. The smallest mode is wide
enough to save the entire contents of the register. When saving the
register because it is live we first try to save in multi-register modes.
If that is not possible the save is done one register at a time. */
static enum machine_mode
regno_save_mode[FIRST_PSEUDO_REGISTER][MAX_MOVE_MAX / MIN_UNITS_PER_WORD + 1];
#define regno_save_mode \
(this_target_reload->x_regno_save_mode)
/* For each hard register, a place on the stack where it can be saved,
if needed. */

View File

@ -1025,6 +1025,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define MOVE_MAX_PIECES MOVE_MAX
#endif
#ifndef MAX_MOVE_MAX
#define MAX_MOVE_MAX MOVE_MAX
#endif
#ifndef MIN_UNITS_PER_WORD
#define MIN_UNITS_PER_WORD UNITS_PER_WORD
#endif
#ifndef STACK_POINTER_OFFSET
#define STACK_POINTER_OFFSET 0
#endif

View File

@ -582,11 +582,6 @@ hard_reg_set_iter_next (hard_reg_set_iterator *iter, unsigned *regno)
extern char global_regs[FIRST_PSEUDO_REGISTER];
/* Call used hard registers which can not be saved because there is no
insn for this. */
extern HARD_REG_SET no_caller_save_reg_set;
struct target_hard_regs {
/* Indexed by hard register number, contains 1 for registers
that are fixed use (stack pointer, pc, frame pointer, etc.;.
@ -622,6 +617,10 @@ struct target_hard_regs {
with the local stack frame are safe, but scant others. */
HARD_REG_SET x_regs_invalidated_by_call;
/* Call used hard registers which can not be saved because there is no
insn for this. */
HARD_REG_SET x_no_caller_save_reg_set;
/* Table of register numbers in the order in which to try to use them. */
int x_reg_alloc_order[FIRST_PSEUDO_REGISTER];
@ -674,6 +673,8 @@ extern struct target_hard_regs *this_target_hard_regs;
(this_target_hard_regs->x_call_fixed_reg_set)
#define regs_invalidated_by_call \
(this_target_hard_regs->x_regs_invalidated_by_call)
#define no_caller_save_reg_set \
(this_target_hard_regs->x_no_caller_save_reg_set)
#define reg_alloc_order \
(this_target_hard_regs->x_reg_alloc_order)
#define inv_reg_alloc_order \

View File

@ -36,10 +36,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define ATTRIBUTE_HIDDEN
#endif
#ifndef MIN_UNITS_PER_WORD
#define MIN_UNITS_PER_WORD UNITS_PER_WORD
#endif
/* Work out the largest "word" size that we can deal with on this target. */
#if MIN_UNITS_PER_WORD > 4
# define LIBGCC2_MAX_UNITS_PER_WORD 8

View File

@ -171,6 +171,17 @@ struct target_reload {
means that (MEM (MEM (REG n))) is also valid if (REG n) does not get
a hard register. */
bool x_spill_indirect_levels;
/* True if caller-save has been reinitialized. */
bool x_caller_save_initialized_p;
/* Modes for each hard register that we can save. The smallest mode is wide
enough to save the entire contents of the register. When saving the
register because it is live we first try to save in multi-register modes.
If that is not possible the save is done one register at a time. */
enum machine_mode (x_regno_save_mode
[FIRST_PSEUDO_REGISTER]
[MAX_MOVE_MAX / MIN_UNITS_PER_WORD + 1]);
};
extern struct target_reload default_target_reload;
@ -184,6 +195,8 @@ extern struct target_reload *this_target_reload;
(this_target_reload->x_indirect_symref_ok)
#define double_reg_address_ok \
(this_target_reload->x_double_reg_address_ok)
#define caller_save_initialized_p \
(this_target_reload->x_caller_save_initialized_p)
extern GTY (()) VEC(rtx,gc) *reg_equiv_memory_loc_vec;
extern rtx *reg_equiv_constant;
@ -377,9 +390,6 @@ extern void calculate_elim_costs_all_insns (void);
/* Deallocate the reload register used by reload number R. */
extern void deallocate_reload_reg (int r);
/* True if caller-save has been reinitialized. */
extern bool caller_save_initialized_p;
/* Functions in caller-save.c: */
/* Initialize for caller-save. */