summaryrefslogtreecommitdiff
path: root/gcc/reload.h
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-12 18:54:17 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-12 18:54:17 +0000
commitc3997e3d46be5d16e7ae76140e666d853bb537c9 (patch)
tree5eb3ab86331c6edc711e274c6b449087603a4829 /gcc/reload.h
parent6ebe4c6978847bb027afb24b03e91aa4a850056e (diff)
downloadgcc-c3997e3d46be5d16e7ae76140e666d853bb537c9.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162095 138bc75d-0d04-0410-961f-82ee72b054a4
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 48b8dfd0386..16d52d95a5c 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. */