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:
parent
462f85cedc
commit
bcbaaba1a3
@ -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.
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
16
gcc/reload.h
16
gcc/reload.h
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user