aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/caller-save.c24
-rw-r--r--gcc/defaults.h8
-rw-r--r--gcc/hard-reg-set.h11
-rw-r--r--gcc/libgcc2.c4
-rw-r--r--gcc/reload.h16
6 files changed, 42 insertions, 34 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 278ee11..f946037 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,18 @@
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.
* expmed.h: New file.
* expmed.c (default_target_costs): New variable.
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 996bb9b..3bd41f2 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -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. */
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 5d56c75..336f386 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -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
diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h
index c0379b3..486a88a 100644
--- a/gcc/hard-reg-set.h
+++ b/gcc/hard-reg-set.h
@@ -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 \
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c
index d6816d0..02828e3 100644
--- a/gcc/libgcc2.c
+++ b/gcc/libgcc2.c
@@ -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
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. */