diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2011-04-21 09:37:44 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2011-04-21 09:37:44 +0000 |
commit | fbbf66e77a385fc1901fdc33c1d977681cab39bf (patch) | |
tree | eaf6c68a5f7e3822c501346ded206279f68c7bec /gcc/config/mips/mips.c | |
parent | e85df92e7d3da03b3f893d378c5c64ceee1de7e1 (diff) | |
download | gcc-fbbf66e77a385fc1901fdc33c1d977681cab39bf.zip gcc-fbbf66e77a385fc1901fdc33c1d977681cab39bf.tar.gz gcc-fbbf66e77a385fc1901fdc33c1d977681cab39bf.tar.bz2 |
target.def (cannot_force_const_mem): Add a mode argument.
gcc/
* target.def (cannot_force_const_mem): Add a mode argument.
* doc/tm.texi.in (TARGET_CANNOT_FORCE_CONST_MEM): Update accordingly.
* doc/tm.texi: Regenerate.
* hooks.h (hook_bool_mode_rtx_false): Declare.
* hooks.c (hook_bool_mode_const_rtx_false): Fix commentary.
(hook_bool_mode_const_rtx_true): Likewise.
(hook_bool_mode_rtx_false): New function.
* reload.c (CONST_POOL_OK_P): Take a mode argument and require it
to be non-VOID. Update call to cannot_force_const_mem.
(find_reloads): Update accordingly.
* varasm.c (force_const_mem): Update call to cannot_force_const_mem.
* config/alpha/alpha.c (alpha_cannot_force_const_mem): Add a mode
argument.
* config/arm/arm-protos.h (arm_cannot_force_const_mem): Likewise.
* config/arm/arm.h (LEGITIMATE_CONSTANT_P): Update call.
* config/arm/arm.c (arm_cannot_force_const_mem): Add a mode argument.
* config/bfin/bfin.c (bfin_cannot_force_const_mem): Likewise.
* config/frv/frv.c (frv_cannot_force_const_mem): Likewise.
* config/i386/i386.c (ix86_cannot_force_const_mem): Likewise.
* config/ia64/ia64.c (ia64_cannot_force_const_mem): Likewise.
* config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to...
(m68k_cannot_force_const_mem): ...this new function.
* config/mips/mips.c (mips_cannot_force_const_mem): Add a mode
argument.
(mips_const_insns, mips_legitimize_const_move): Update calls.
(mips_secondary_reload_class): Likewise.
* config/pa/pa.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to...
(pa_cannot_force_const_mem): ...this new function.
* config/rs6000/rs6000.c (TARGET_CANNOT_FORCE_CONST_MEM): Reefine
to...
(rs6000_cannot_force_const_mem): ...this new function.
* config/s390/s390.c (s390_cannot_force_const_mem): Add a mode
argument.
* config/sparc/sparc.c (sparc_cannot_force_const_mem): Likewise.
* config/xtensa/xtensa.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine
to...
(xtensa_cannot_force_const_mem): ...this new function.
From-SVN: r172813
Diffstat (limited to 'gcc/config/mips/mips.c')
-rw-r--r-- | gcc/config/mips/mips.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 2dd90e2..f6a4ec9 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -1997,7 +1997,7 @@ mips_tls_symbol_ref_1 (rtx *x, void *data ATTRIBUTE_UNUSED) /* Implement TARGET_CANNOT_FORCE_CONST_MEM. */ static bool -mips_cannot_force_const_mem (rtx x) +mips_cannot_force_const_mem (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x) { enum mips_symbol_type type; rtx base, offset; @@ -2387,7 +2387,7 @@ mips_const_insns (rtx x) { if (SMALL_INT (offset)) return n + 1; - else if (!targetm.cannot_force_const_mem (x)) + else if (!targetm.cannot_force_const_mem (GET_MODE (x), x)) return n + 1 + mips_build_integer (codes, INTVAL (offset)); } } @@ -3090,7 +3090,7 @@ mips_legitimize_const_move (enum machine_mode mode, rtx dest, rtx src) forced into memory, as it usually produces better code. */ split_const (src, &base, &offset); if (offset != const0_rtx - && (targetm.cannot_force_const_mem (src) + && (targetm.cannot_force_const_mem (mode, src) || (!TARGET_MIPS16 && can_create_pseudo_p ()))) { base = mips_force_temporary (dest, base); @@ -11087,7 +11087,7 @@ mips_secondary_reload_class (enum reg_class rclass, /* In this case we can use mtc1, mfc1, dmtc1 or dmfc1. */ return NO_REGS; - if (CONSTANT_P (x) && !targetm.cannot_force_const_mem (x)) + if (CONSTANT_P (x) && !targetm.cannot_force_const_mem (mode, x)) /* We can force the constant to memory and use lwc1 and ldc1. As above, we will use pairs of lwc1s if ldc1 is not supported. */ |