aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload.h
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2010-07-12 18:54:17 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2010-07-12 18:54:17 +0000
commitbcbaaba1a33590a2795a9e49228943466e360315 (patch)
tree5eb3ab86331c6edc711e274c6b449087603a4829 /gcc/reload.h
parent462f85cedc8375e893fd1179f5ecab498085c78d (diff)
downloadgcc-bcbaaba1a33590a2795a9e49228943466e360315.zip
gcc-bcbaaba1a33590a2795a9e49228943466e360315.tar.gz
gcc-bcbaaba1a33590a2795a9e49228943466e360315.tar.bz2
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
Diffstat (limited to 'gcc/reload.h')
-rw-r--r--gcc/reload.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/reload.h b/gcc/reload.h
index 48b8dfd..16d52d9 100644
--- a/gcc/reload.h
+++ b/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. */