]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
hooks.c (hook_int_rtx_mode_as_bool_0): New function.
authorOleg Endo <olegendo@gcc.gnu.org>
Wed, 5 Sep 2012 17:31:17 +0000 (17:31 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Wed, 5 Sep 2012 17:31:17 +0000 (17:31 +0000)
* hooks.c (hook_int_rtx_mode_as_bool_0): New function.
* hooks.h (hook_int_rtx_mode_as_bool_0): Declare it.
* output.h (default_address_cost): Add machine_mode and address space
arguments.
* target.def (address_cost): Likewise.
* rtlanal.c (address_cost): Pass mode and address space to target hook.
(default_address_cost): Add unnamed machine_mode and address space
arguments.
* doc/tm.texi: Regenerate.
* config/alpha/alpha.c (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
* config/arm/arm.c (arm_address_cost): Add machine_mode and address
space arguments.
* config/avr/avr.c (avr_address_cost): Likewise.
* config/bfin/bfin.c (bfin_address_cost): Likewise.
* config/cr16/cr16.c (cr16_address_cost): Likewise.
* config/cris/cris.c (cris_address_cost): Likewise.
* config/epiphany/epiphany.c (epiphany_address_cost): Likewise.
* config/i386/i386.c (ix86_address_cost): Likewise.
* config/ia64/ia64.c (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
* config/iq2000/iq2000.c (iq2000_address_cost): Add machine_mode and
address space arguments.  Pass them on in recursive invocation.
* config/lm32/lm32.c (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
* config/m32c/m32c.c (m32c_address_cost): Add machine_mode and address
space arguments.
* config/m32r/m32r.c (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
* config/mcore/mcore.c (TARGET_ADDRESS_COST): Likewise.
* config/mep/mep.c (mep_address_cost): Add machine_mode and address
space arguments.
* config/microblaze/microblaze.c (microblaze_address_cost): Likewise.
* config/mips/mips.c (mips_address_cost): Likewise.
* config/mmix/mmix.c (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
* config/mn10300/mn10300.c (mn10300_address_cost): Add machine_mode and
address space arguments.
(mn10300_rtx_costs): Pass GET_MODE (x) and MEM_ADDR_SPACE (x) to
mn10300_address_cost.
* config/pa/pa.c (hppa_address_cost): Add machine_mode and address
space arguments.
* config/rs6000/rs6000.c (rs6000_debug_address_cost): Likewise.
(TARGET_ADDRESS_COST): Use hook_int_rtx_mode_as_bool_0 instead of
hook_int_rtx_bool_0.
* config/rx/rx.c (rx_address_cost): Add machine_mode and address
space arguments.
* config/s390/s390.c (s390_address_cost): Likewise.
* config/score/score-protos.h (score_address_cost): Likewise.
* config/score/score.c (score_address_cost): Likewise.
* config/sh/sh.c (sh_address_cost): Likewise.
* config/sparc/sparc.c (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
* config/spu/spu.c (TARGET_ADDRESS_COST): Likewise.
* config/stormy16/stormy16.c (xstormy16_address_cost): Add machine_mode
and address space arguments.
* config/v850/v850.c (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
* config/vax/vax.c (vax_address_cost): Add machine_mode and address
space arguments.
* config/xtensa/xtensa (TARGET_ADDRESS_COST): Use
hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.

From-SVN: r190990

39 files changed:
gcc/ChangeLog
gcc/config/alpha/alpha.c
gcc/config/arm/arm.c
gcc/config/avr/avr.c
gcc/config/bfin/bfin.c
gcc/config/cr16/cr16.c
gcc/config/cris/cris.c
gcc/config/epiphany/epiphany.c
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c
gcc/config/iq2000/iq2000.c
gcc/config/lm32/lm32.c
gcc/config/m32c/m32c.c
gcc/config/m32r/m32r.c
gcc/config/mcore/mcore.c
gcc/config/mep/mep.c
gcc/config/microblaze/microblaze.c
gcc/config/mips/mips.c
gcc/config/mmix/mmix.c
gcc/config/mn10300/mn10300.c
gcc/config/pa/pa.c
gcc/config/rs6000/rs6000.c
gcc/config/rx/rx.c
gcc/config/s390/s390.c
gcc/config/score/score-protos.h
gcc/config/score/score.c
gcc/config/sh/sh.c
gcc/config/sparc/sparc.c
gcc/config/spu/spu.c
gcc/config/stormy16/stormy16.c
gcc/config/v850/v850.c
gcc/config/vax/vax.c
gcc/config/xtensa/xtensa.c
gcc/doc/tm.texi
gcc/hooks.c
gcc/hooks.h
gcc/output.h
gcc/rtlanal.c
gcc/target.def

index 978b47d7fc7dc5dced22da4c3ed56d65f5dc5ef3..384d9fe7ec8c8767696c57221e38cf412043f33b 100644 (file)
@@ -1,3 +1,68 @@
+2012-09-05  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       * hooks.c (hook_int_rtx_mode_as_bool_0): New function.
+       * hooks.h (hook_int_rtx_mode_as_bool_0): Declare it.
+       * output.h (default_address_cost): Add machine_mode and address space
+       arguments.
+       * target.def (address_cost): Likewise.
+       * rtlanal.c (address_cost): Pass mode and address space to target hook.
+       (default_address_cost): Add unnamed machine_mode and address space
+       arguments.
+       * doc/tm.texi: Regenerate.
+       * config/alpha/alpha.c (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+       * config/arm/arm.c (arm_address_cost): Add machine_mode and address
+       space arguments.
+       * config/avr/avr.c (avr_address_cost): Likewise.
+       * config/bfin/bfin.c (bfin_address_cost): Likewise.
+       * config/cr16/cr16.c (cr16_address_cost): Likewise.
+       * config/cris/cris.c (cris_address_cost): Likewise.
+       * config/epiphany/epiphany.c (epiphany_address_cost): Likewise.
+       * config/i386/i386.c (ix86_address_cost): Likewise.
+       * config/ia64/ia64.c (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+       * config/iq2000/iq2000.c (iq2000_address_cost): Add machine_mode and
+       address space arguments.  Pass them on in recursive invocation.
+       * config/lm32/lm32.c (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+       * config/m32c/m32c.c (m32c_address_cost): Add machine_mode and address
+       space arguments.
+       * config/m32r/m32r.c (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+       * config/mcore/mcore.c (TARGET_ADDRESS_COST): Likewise.
+       * config/mep/mep.c (mep_address_cost): Add machine_mode and address
+       space arguments.
+       * config/microblaze/microblaze.c (microblaze_address_cost): Likewise.
+       * config/mips/mips.c (mips_address_cost): Likewise.
+       * config/mmix/mmix.c (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+       * config/mn10300/mn10300.c (mn10300_address_cost): Add machine_mode and
+       address space arguments.
+       (mn10300_rtx_costs): Pass GET_MODE (x) and MEM_ADDR_SPACE (x) to
+       mn10300_address_cost.
+       * config/pa/pa.c (hppa_address_cost): Add machine_mode and address
+       space arguments.
+       * config/rs6000/rs6000.c (rs6000_debug_address_cost): Likewise.
+       (TARGET_ADDRESS_COST): Use hook_int_rtx_mode_as_bool_0 instead of
+       hook_int_rtx_bool_0.
+       * config/rx/rx.c (rx_address_cost): Add machine_mode and address
+       space arguments.
+       * config/s390/s390.c (s390_address_cost): Likewise.
+       * config/score/score-protos.h (score_address_cost): Likewise.
+       * config/score/score.c (score_address_cost): Likewise.
+       * config/sh/sh.c (sh_address_cost): Likewise.
+       * config/sparc/sparc.c (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+       * config/spu/spu.c (TARGET_ADDRESS_COST): Likewise.
+       * config/stormy16/stormy16.c (xstormy16_address_cost): Add machine_mode
+       and address space arguments.
+       * config/v850/v850.c (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+       * config/vax/vax.c (vax_address_cost): Add machine_mode and address
+       space arguments.
+       * config/xtensa/xtensa (TARGET_ADDRESS_COST): Use
+       hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
+
 2012-09-05   Diego Novillo  <dnovillo@google.com>
 
        PR bootstrap/54484
index 0aab4539b50b1dcc91518827b9bfe57e77848c0c..6b9fd156a60f076af18310bf35572f2436c12ac2 100644 (file)
@@ -9795,7 +9795,7 @@ alpha_conditional_register_usage (void)
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS alpha_rtx_costs
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef TARGET_MACHINE_DEPENDENT_REORG
 #define TARGET_MACHINE_DEPENDENT_REORG alpha_reorg
index 4001f350f2fd1726fba38939ba1bf600750526b8..2e9003189b1ff01fd4c11ab3805ff0d9bb2ea1cb 100644 (file)
@@ -162,7 +162,7 @@ static bool arm_fastmul_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, boo
 static bool arm_xscale_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool);
 static bool arm_9e_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool);
 static bool arm_rtx_costs (rtx, int, int, int, int *, bool);
-static int arm_address_cost (rtx, bool);
+static int arm_address_cost (rtx, enum machine_mode, addr_space_t, bool);
 static int arm_register_move_cost (enum machine_mode, reg_class_t, reg_class_t);
 static int arm_memory_move_cost (enum machine_mode, reg_class_t, bool);
 static void arm_init_builtins (void);
@@ -8411,7 +8411,8 @@ arm_thumb_address_cost (rtx x)
 }
 
 static int
-arm_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
+arm_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                 addr_space_t as ATTRIBUTE_UNUSED, bool speed ATTRIBUTE_UNUSED)
 {
   return TARGET_32BIT ? arm_arm_address_cost (x) : arm_thumb_address_cost (x);
 }
index 95892ade4485a962fd2399a51b0b11ff447715f0..e69e35aaecf8e68af68d0fa26f507b2a874a4481 100644 (file)
@@ -8896,7 +8896,9 @@ avr_rtx_costs (rtx x, int codearg, int outer_code,
 /* Implement `TARGET_ADDRESS_COST'.  */
 
 static int
-avr_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
+avr_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                 addr_space_t as ATTRIBUTE_UNUSED,
+                 bool speed ATTRIBUTE_UNUSED)
 {
   int cost = 4;
   
index 3a4b8af9f9b6c365b774aaa2ee9e4cdcccf16eee..709cea39fce14f5b2011a8e95ac09b1002cacd84 100644 (file)
@@ -1288,7 +1288,10 @@ bfin_dsp_memref_p (rtx x)
    All addressing modes are equally cheap on the Blackfin.  */
 
 static int
-bfin_address_cost (rtx addr ATTRIBUTE_UNUSED, bool speed ATTRIBUTE_UNUSED)
+bfin_address_cost (rtx addr ATTRIBUTE_UNUSED,
+                  enum machine_mode mode ATTRIBUTE_UNUSED,
+                  addr_space_t as ATTRIBUTE_UNUSED,
+                  bool speed ATTRIBUTE_UNUSED)
 {
   return 1;
 }
index b9305701923011554ce3148797517f4dc6523774..7e6f1d2a41c42f1b76216da9b05d35396d6f1aaf 100644 (file)
@@ -1286,7 +1286,9 @@ cr16_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED,
 
 /* Return cost of the memory address x.  */
 static int
-cr16_address_cost (rtx addr, bool speed ATTRIBUTE_UNUSED)
+cr16_address_cost (rtx addr, enum machine_mode mode ATTRIBUTE_UNUSED,
+                  addr_space_t as ATTRIBUTE_UNUSED,
+                  bool speed ATTRIBUTE_UNUSED)
 {
   enum cr16_addrtype addrtype;
   struct cr16_address address;
index 4a73c81683341caa34df4805af1d86bf920ca1be..6378c622a25d565781d12cb83d84ba0e6f9c2fd7 100644 (file)
@@ -130,7 +130,7 @@ static reg_class_t cris_preferred_reload_class (rtx, reg_class_t);
 static int cris_register_move_cost (enum machine_mode, reg_class_t, reg_class_t);
 static int cris_memory_move_cost (enum machine_mode, reg_class_t, bool);
 static bool cris_rtx_costs (rtx, int, int, int, int *, bool);
-static int cris_address_cost (rtx, bool);
+static int cris_address_cost (rtx, enum machine_mode, addr_space_t, bool);
 static bool cris_pass_by_reference (cumulative_args_t, enum machine_mode,
                                    const_tree, bool);
 static int cris_arg_partial_bytes (cumulative_args_t, enum machine_mode,
@@ -2149,7 +2149,9 @@ cris_rtx_costs (rtx x, int code, int outer_code, int opno, int *total,
 /* The ADDRESS_COST worker.  */
 
 static int
-cris_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
+cris_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                  addr_space_t as ATTRIBUTE_UNUSED,
+                  bool speed ATTRIBUTE_UNUSED)
 {
   /* The metric to use for the cost-macros is unclear.
      The metric used here is (the number of cycles needed) / 2,
index b4a193a7e1a27f25acbf2130509fdf93ae887e37..65bb1c8ee8883e861be7011ae45dd50135866ce6 100644 (file)
@@ -729,7 +729,8 @@ epiphany_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
    If ADDR is not a valid address, its cost is irrelevant.  */
 
 static int
-epiphany_address_cost (rtx addr, bool speed)
+epiphany_address_cost (rtx addr, enum machine_mode mode ATTRIBUTE_UNUSED,
+                      addr_space_t as ATTRIBUTE_UNUSED, bool speed)
 {
   rtx reg;
   rtx off = const0_rtx;
index e2e1d220302b935e668a904507b4e250d3bfd339..62d3a8c990b62e0b3746c230a1993cb9cf038706 100644 (file)
@@ -12027,7 +12027,9 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
    requires to two regs - that would mean more pseudos with longer
    lifetimes.  */
 static int
-ix86_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
+ix86_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                  addr_space_t as ATTRIBUTE_UNUSED,
+                  bool speed ATTRIBUTE_UNUSED)
 {
   struct ix86_address parts;
   int cost = 1;
index f2f02c8e97a72a5ebcb3fdb9e76cabab6918b68b..984082cb775f4bf056814078209d5342fe2b9d6d 100644 (file)
@@ -524,7 +524,7 @@ static const struct attribute_spec ia64_attribute_table[] =
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS ia64_rtx_costs
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef TARGET_UNSPEC_MAY_TRAP_P
 #define TARGET_UNSPEC_MAY_TRAP_P ia64_unspec_may_trap_p
index ab55a154f06a197139b773a3d60d435412531b26..da0b43da35b399b90de096941761c9ad478209fd 100644 (file)
@@ -152,7 +152,8 @@ static void iq2000_setup_incoming_varargs (cumulative_args_t,
                                           enum machine_mode, tree, int *,
                                           int);
 static bool iq2000_rtx_costs          (rtx, int, int, int, int *, bool);
-static int  iq2000_address_cost       (rtx, bool);
+static int  iq2000_address_cost       (rtx, enum machine_mode, addr_space_t,
+                                      bool);
 static section *iq2000_select_section (tree, int, unsigned HOST_WIDE_INT);
 static rtx  iq2000_legitimize_address (rtx, rtx, enum machine_mode);
 static bool iq2000_pass_by_reference  (cumulative_args_t, enum machine_mode,
@@ -779,7 +780,8 @@ iq2000_move_1word (rtx operands[], rtx insn, int unsignedp)
 /* Provide the costs of an addressing mode that contains ADDR.  */
 
 static int
-iq2000_address_cost (rtx addr, bool speed)
+iq2000_address_cost (rtx addr, enum machine_mode mode, addr_space_t as,
+                    bool speed)
 {
   switch (GET_CODE (addr))
     {
@@ -830,7 +832,7 @@ iq2000_address_cost (rtx addr, bool speed)
          case LABEL_REF:
          case HIGH:
          case LO_SUM:
-           return iq2000_address_cost (plus1, speed) + 1;
+           return iq2000_address_cost (plus1, mode, as, speed) + 1;
 
          default:
            break;
index 376df051090f0a0752067f3d2081562adfa5126b..d9c9e19b0daa009dd19f384a6b47ccad34b50744 100644 (file)
@@ -86,7 +86,7 @@ static bool lm32_legitimate_constant_p (enum machine_mode, rtx);
 #undef TARGET_OPTION_OVERRIDE
 #define TARGET_OPTION_OVERRIDE lm32_option_override
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS lm32_rtx_costs
 #undef TARGET_IN_SMALL_DATA_P
index 237917885226a64c27919e283366eb5685f6c27c..100c16fe39125a25c3ab2e9e958c85cc65dae1ae 100644 (file)
@@ -2278,7 +2278,9 @@ m32c_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
 #undef TARGET_ADDRESS_COST
 #define TARGET_ADDRESS_COST m32c_address_cost
 static int
-m32c_address_cost (rtx addr, bool speed ATTRIBUTE_UNUSED)
+m32c_address_cost (rtx addr, enum machine_mode mode ATTRIBUTE_UNUSED,
+                  addr_space_t as ATTRIBUTE_UNUSED,
+                  bool speed ATTRIBUTE_UNUSED)
 {
   int i;
   /*  fprintf(stderr, "\naddress_cost\n");
index 273864688445396910d9206712aa8b1700f454a7..4d899666f2bed18c514b5dc6db385124f57dd9f3 100644 (file)
@@ -161,7 +161,7 @@ static const struct attribute_spec m32r_attribute_table[] =
 #undef  TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS m32r_rtx_costs
 #undef  TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef  TARGET_PROMOTE_PROTOTYPES
 #define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_true
index c592964e96b1b70b6969ff08cc0e9e9b77cdec11..501c8cee81429ad04cf2271fad69f71af6ce61e8 100644 (file)
@@ -191,7 +191,7 @@ static const struct attribute_spec mcore_attribute_table[] =
 #undef  TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS               mcore_rtx_costs
 #undef  TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST            hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST            hook_int_rtx_mode_as_bool_0
 #undef  TARGET_MACHINE_DEPENDENT_REORG
 #define TARGET_MACHINE_DEPENDENT_REORG mcore_reorg
 
index 5089e033316557e9257a35f7743f75ef8ad544e7..1f712344312376c720490aa8c070d6717566ef24 100644 (file)
@@ -212,7 +212,7 @@ static int mep_sched_reorder (FILE *, int, rtx *, int *, int);
 static rtx mep_make_bundle (rtx, rtx);
 static void mep_bundle_insns (rtx);
 static bool mep_rtx_cost (rtx, int, int, int, int *, bool);
-static int mep_address_cost (rtx, bool);
+static int mep_address_cost (rtx, enum machine_mode, addr_space_t, bool);
 static void mep_setup_incoming_varargs (cumulative_args_t, enum machine_mode,
                                        tree, int *, int);
 static bool mep_pass_by_reference (cumulative_args_t cum, enum machine_mode,
@@ -7152,7 +7152,10 @@ mep_rtx_cost (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
 }
 
 static int
-mep_address_cost (rtx addr ATTRIBUTE_UNUSED, bool ATTRIBUTE_UNUSED speed_p)
+mep_address_cost (rtx addr ATTRIBUTE_UNUSED,
+                 enum machine_mode mode ATTRIBUTE_UNUSED,
+                 addr_space_t as ATTRIBUTE_UNUSED,
+                 bool ATTRIBUTE_UNUSED speed_p)
 {
   return 1;
 }
index 199d1b8d46fe23fb1ae7e0c5cf732923f48b2749..d774e54ca331c27c98ddb27f15ca00b99f100acd 100644 (file)
@@ -1043,7 +1043,9 @@ microblaze_address_insns (rtx x, enum machine_mode mode)
 /* Provide the costs of an addressing mode that contains ADDR.
    If ADDR is not a valid address, its cost is irrelevant.  */
 static int
-microblaze_address_cost (rtx addr, bool speed ATTRIBUTE_UNUSED)
+microblaze_address_cost (rtx addr, enum machine_mode mode ATTRIBUTE_UNUSED,
+                        addr_space_t as ATTRIBUTE_UNUSED,
+                        bool speed ATTRIBUTE_UNUSED)
 {
   return COSTS_N_INSNS (microblaze_address_insns (addr, GET_MODE (addr)));
 }
index 06b2ff4d0c36e7934fba7d3de683810a435a98b5..09322f15926cc603f3bf1d33e7e262efbb53dd09 100644 (file)
@@ -3943,9 +3943,11 @@ mips_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
 /* Implement TARGET_ADDRESS_COST.  */
 
 static int
-mips_address_cost (rtx addr, bool speed ATTRIBUTE_UNUSED)
+mips_address_cost (rtx addr, enum machine_mode mode,
+                  addr_space_t as ATTRIBUTE_UNUSED,
+                  bool speed ATTRIBUTE_UNUSED)
 {
-  return mips_address_insns (addr, SImode, false);
+  return mips_address_insns (addr, mode, false);
 }
 \f
 /* Information about a single instruction in a multi-instruction
index 3a99cb626af6be6cf96b9628a0c2ff03c4aea32c..eaf5f2ed43773e5bcbfa1a862d5f189070fb236b 100644 (file)
@@ -223,7 +223,7 @@ static void mmix_conditional_register_usage (void);
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS mmix_rtx_costs
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef TARGET_REGISTER_MOVE_COST
 #define TARGET_REGISTER_MOVE_COST mmix_register_move_cost
index 769e883f01bd678788289a2105e44647fd56819b..7ec2459052f9fa7705f0b3efd1829b4f5ffe9ae2 100644 (file)
@@ -2142,7 +2142,8 @@ mn10300_delegitimize_address (rtx orig_x)
    with an address register.  */
 
 static int
-mn10300_address_cost (rtx x, bool speed)
+mn10300_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                     addr_space_t as ATTRIBUTE_UNUSED, bool speed)
 {
   HOST_WIDE_INT i;
   rtx base, index;
@@ -2457,7 +2458,8 @@ mn10300_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
       break;
 
     case MEM:
-      total = mn10300_address_cost (XEXP (x, 0), speed);
+      total = mn10300_address_cost (XEXP (x, 0), GET_MODE (x),
+                                   MEM_ADDR_SPACE (x), speed);
       if (speed)
        total = COSTS_N_INSNS (2 + total);
       goto alldone;
index e692e485f37ea2983bcb042997ad36e6eacaacaa..bb54c6e1bfe272f50ebbe910badcc4594d5ec98e 100644 (file)
@@ -91,7 +91,7 @@ static void copy_reg_pointer (rtx, rtx);
 static void fix_range (const char *);
 static int hppa_register_move_cost (enum machine_mode mode, reg_class_t,
                                    reg_class_t);
-static int hppa_address_cost (rtx, bool);
+static int hppa_address_cost (rtx, enum machine_mode mode, addr_space_t, bool);
 static bool hppa_rtx_costs (rtx, int, int, int, int *, bool);
 static inline rtx force_mode (enum machine_mode, rtx);
 static void pa_reorg (void);
@@ -1397,7 +1397,8 @@ hppa_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED,
    as GO_IF_LEGITIMATE_ADDRESS.  */
 
 static int
-hppa_address_cost (rtx X,
+hppa_address_cost (rtx X, enum machine_mode mode ATTRIBUTE_UNUSED,
+                  addr_space_t as ATTRIBUTE_UNUSED,
                   bool speed ATTRIBUTE_UNUSED)
 {
   switch (GET_CODE (X))
index 6c58307a60f7bb8f12df443f9693be89e4b53b16..430125f719f40bc703801b853fb44f108f6ea2f8 100644 (file)
@@ -928,7 +928,8 @@ static tree rs6000_builtin_vectorized_libmass (tree, tree, tree);
 static rtx rs6000_emit_set_long_const (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
 static int rs6000_memory_move_cost (enum machine_mode, reg_class_t, bool);
 static bool rs6000_debug_rtx_costs (rtx, int, int, int, int *, bool);
-static int rs6000_debug_address_cost (rtx, bool);
+static int rs6000_debug_address_cost (rtx, enum machine_mode, addr_space_t,
+                                     bool);
 static int rs6000_debug_adjust_cost (rtx, rtx, rtx, int);
 static bool is_microcoded_insn (rtx);
 static bool is_nonpipeline_insn (rtx);
@@ -1294,7 +1295,7 @@ static const struct attribute_spec rs6000_attribute_table[] =
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS rs6000_rtx_costs
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef TARGET_DWARF_REGISTER_SPAN
 #define TARGET_DWARF_REGISTER_SPAN rs6000_dwarf_register_span
@@ -26070,7 +26071,8 @@ rs6000_debug_rtx_costs (rtx x, int code, int outer_code, int opno, int *total,
 /* Debug form of ADDRESS_COST that is selected if -mdebug=cost.  */
 
 static int
-rs6000_debug_address_cost (rtx x, bool speed)
+rs6000_debug_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                          addr_space_t as ATTRIBUTE_UNUSED, bool speed)
 {
   int ret = TARGET_ADDRESS_COST (x, speed);
 
index e2e61b2c883dcaadd2ab560822126ee0d949a691..472625e4af6ddb50980633ee5e584058a4c028f1 100644 (file)
@@ -2724,7 +2724,8 @@ rx_is_legitimate_constant (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x)
 }
 
 static int
-rx_address_cost (rtx addr, bool speed)
+rx_address_cost (rtx addr, enum machine_mode mode ATTRIBUTE_UNUSED,
+                addr_space_t as ATTRIBUTE_UNUSED, bool speed)
 {
   rtx a, b;
 
index 976d4cbc8a7c05570f80fa81b2ef7520e0bda9d9..f0141d0c4befd4b73165517e4aa8614d5dbcd4e3 100644 (file)
@@ -2613,7 +2613,9 @@ s390_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
 /* Return the cost of an address rtx ADDR.  */
 
 static int
-s390_address_cost (rtx addr, bool speed ATTRIBUTE_UNUSED)
+s390_address_cost (rtx addr, enum machine_mode mode ATTRIBUTE_UNUSED,
+                  addr_space_t as ATTRIBUTE_UNUSED,
+                  bool speed ATTRIBUTE_UNUSED)
 {
   struct s390_address ad;
   if (!s390_decompose_address (addr, &ad))
index 8dbebcbe241f35c7da07aa8db9b16bfe4634d0cd..04b67def33dc8378a1e3978be5795e7478136a2c 100644 (file)
@@ -39,7 +39,8 @@ extern const char * score_move (rtx *ops);
 extern bool score_unaligned_load (rtx* ops);
 extern bool score_unaligned_store (rtx* ops);
 extern bool score_block_move (rtx* ops);
-extern int score_address_cost (rtx addr, bool speed);
+extern int score_address_cost (rtx addr, enum machine_mode mode,
+                              addr_space_t as, bool speed);
 extern int score_address_p (enum machine_mode mode, rtx x, int strict);
 extern int score_reg_class (int regno);
 extern int score_hard_regno_mode_ok (unsigned int, enum machine_mode);
index 6d81cd60901422fff4e8024e8a67d36068e0df5b..2eeeab9f872c7091d97338a30bf4cc70f15b0001 100644 (file)
@@ -1232,7 +1232,8 @@ score_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
 
 /* Implement TARGET_ADDRESS_COST macro.  */
 int
-score_address_cost (rtx addr,
+score_address_cost (rtx addr, enum machine_mode mode ATTRIBUTE_UNUSED,
+                   addr_space_t as ATTRIBUTE_UNUSED,
                    bool speed ATTRIBUTE_UNUSED)
 {
   return score_address_insns (addr, SImode);
index 5055d1ff929e5272cff827013f7145e972bdb97f..10dad62b8f7a931aaaf2802b67efb05fb984254a 100644 (file)
@@ -255,7 +255,7 @@ static int multcosts (rtx);
 static bool unspec_caller_rtx_p (rtx);
 static bool sh_cannot_copy_insn_p (rtx);
 static bool sh_rtx_costs (rtx, int, int, int, int *, bool);
-static int sh_address_cost (rtx, bool);
+static int sh_address_cost (rtx, enum machine_mode, addr_space_t, bool);
 static int sh_pr_n_sets (void);
 static rtx sh_allocate_initial_value (rtx);
 static reg_class_t sh_preferred_reload_class (rtx, reg_class_t);
@@ -3430,7 +3430,8 @@ disp_addr_displacement (rtx x)
 /* Compute the cost of an address.  */
 
 static int
-sh_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
+sh_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                addr_space_t as ATTRIBUTE_UNUSED, bool speed ATTRIBUTE_UNUSED)
 {
   /* 'reg + disp' addressing.  */
   if (satisfies_constraint_Sdd (x))
index 140332eb8990a381efe2943d6acd1e54038cf5c8..fff17de9e6737b3d417a82f08419d2f7a8415877 100644 (file)
@@ -689,7 +689,7 @@ char sparc_hard_reg_printed[8];
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS sparc_rtx_costs
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 #undef TARGET_REGISTER_MOVE_COST
 #define TARGET_REGISTER_MOVE_COST sparc_register_move_cost
 
index 51e0dfbb08351999372314c687954c3f42cd62bf..2fe1f3f51a0c09afd744a44a7b528f874ec7a335 100644 (file)
@@ -7161,7 +7161,7 @@ static const struct attribute_spec spu_attribute_table[] =
 #define TARGET_RTX_COSTS spu_rtx_costs
 
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef TARGET_SCHED_ISSUE_RATE
 #define TARGET_SCHED_ISSUE_RATE spu_sched_issue_rate
index fb0844c69f33430d59e82c483500c5aae36f6b92..a6f2b5447b7e4036c768003aaf033dfd3cf1eb94 100644 (file)
@@ -58,7 +58,7 @@ static void xstormy16_asm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
 static void xstormy16_init_builtins (void);
 static rtx xstormy16_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
 static bool xstormy16_rtx_costs (rtx, int, int, int, int *, bool);
-static int xstormy16_address_cost (rtx, bool);
+static int xstormy16_address_cost (rtx, enum machine_mode, addr_space_t, bool);
 static bool xstormy16_return_in_memory (const_tree, const_tree);
 
 static GTY(()) section *bss100_section;
@@ -103,7 +103,9 @@ xstormy16_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
 }
 
 static int
-xstormy16_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
+xstormy16_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                       addr_space_t as ATTRIBUTE_UNUSED,
+                       bool speed ATTRIBUTE_UNUSED)
 {
   return (CONST_INT_P (x) ? 2
          : GET_CODE (x) == PLUS ? 7
index f74c7ed49f074932f550d2eaee28e3c9340e6e3e..95cdcb47702f0e379910f5757dc6775fee5de209 100644 (file)
@@ -3130,7 +3130,7 @@ static const struct attribute_spec v850_attribute_table[] =
 #define TARGET_RTX_COSTS v850_rtx_costs
 
 #undef  TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef  TARGET_MACHINE_DEPENDENT_REORG
 #define TARGET_MACHINE_DEPENDENT_REORG v850_reorg
index aa848108cf7ce0234ae59b97da2fe28521d0b561..239b82c3895778e15ffce4217977ddbbf6bb18f2 100644 (file)
@@ -53,7 +53,7 @@ static void vax_init_libfuncs (void);
 static void vax_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
                                 HOST_WIDE_INT, tree);
 static int vax_address_cost_1 (rtx);
-static int vax_address_cost (rtx, bool);
+static int vax_address_cost (rtx, enum machine_mode, addr_space_t, bool);
 static bool vax_rtx_costs (rtx, int, int, int, int *, bool);
 static rtx vax_function_arg (cumulative_args_t, enum machine_mode,
                             const_tree, bool);
@@ -738,7 +738,9 @@ vax_address_cost_1 (rtx addr)
 }
 
 static int
-vax_address_cost (rtx x, bool speed ATTRIBUTE_UNUSED)
+vax_address_cost (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED,
+                 addr_space_t as ATTRIBUTE_UNUSED,
+                 bool speed ATTRIBUTE_UNUSED)
 {
   return (1 + (REG_P (x) ? 0 : vax_address_cost_1 (x)));
 }
index 6fbb3f6fe318a0537b7da28e9858c34ddf8434db..987b6d7020f25926017a8e31e485b616346f6732 100644 (file)
@@ -211,7 +211,7 @@ static const int reg_nonleaf_alloc_order[FIRST_PSEUDO_REGISTER] =
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS xtensa_rtx_costs
 #undef TARGET_ADDRESS_COST
-#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
 
 #undef TARGET_MEMBER_TYPE_FORCES_BLK
 #define TARGET_MEMBER_TYPE_FORCES_BLK xtensa_member_type_forces_blk
index a4dc7c1f5fc90aa27d5864949871aeb5d615e714..11b2f9aa5674b96f28b0a630195990eaa8e7b04a 100644 (file)
@@ -6440,7 +6440,7 @@ The hook returns true when all subexpressions of @var{x} have been
 processed, and false when @code{rtx_cost} should recurse.
 @end deftypefn
 
-@deftypefn {Target Hook} int TARGET_ADDRESS_COST (rtx @var{address}, bool @var{speed})
+@deftypefn {Target Hook} int TARGET_ADDRESS_COST (rtx @var{address}, enum machine_mode @var{mode}, addr_space_t @var{as}, bool @var{speed})
 This hook computes the cost of an addressing mode that contains
 @var{address}.  If not defined, the cost is computed from
 the @var{address} expression and the @code{TARGET_RTX_COST} hook.
index c0046398d72cb0c5e9556d82e53ed120cd72e03b..775da3c3d2f6c361c493b477e71974e47eb0420a 100644 (file)
@@ -200,6 +200,12 @@ hook_int_rtx_bool_0 (rtx a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
   return 0;
 }
 
+int
+hook_int_rtx_mode_as_bool_0 (rtx, enum machine_mode, addr_space_t, bool)
+{
+  return 0;
+}
+
 unsigned int
 hook_uint_void_0 (void)
 {
index 8eec169e78c2ed7680353bc870fc88379a7c235e..1774816d4e92a04b1e576faab72c261cacbe9dd5 100644 (file)
@@ -75,6 +75,8 @@ extern int hook_int_const_tree_0 (const_tree);
 extern int hook_int_const_tree_const_tree_1 (const_tree, const_tree);
 extern int hook_int_rtx_0 (rtx);
 extern int hook_int_rtx_bool_0 (rtx, bool);
+extern int hook_int_rtx_mode_as_bool_0 (rtx, enum machine_mode, addr_space_t,
+                                       bool);
 
 extern tree hook_tree_const_tree_null (const_tree);
 
index 4a811633a4415576ccadd7c28e4995d84456ad22..705c02e3dc8983dd75ed56028f8d4f64b3824214 100644 (file)
@@ -606,7 +606,7 @@ extern void default_elf_init_array_asm_out_constructor (rtx, int);
 extern void default_elf_fini_array_asm_out_destructor (rtx, int);
 extern int maybe_assemble_visibility (tree);
 
-extern int default_address_cost (rtx, bool);
+extern int default_address_cost (rtx, enum machine_mode, addr_space_t, bool);
 
 /* Output stack usage information.  */
 extern void output_stack_usage (void);
index 0f791e2e4df1a736f4ece55c94ebdd78b4a01fcf..89ca226ccab1b182e4a391da88f04bc7afd9e3c0 100644 (file)
@@ -3820,13 +3820,13 @@ address_cost (rtx x, enum machine_mode mode, addr_space_t as, bool speed)
   if (!memory_address_addr_space_p (mode, x, as))
     return 1000;
 
-  return targetm.address_cost (x, speed);
+  return targetm.address_cost (x, mode, as, speed);
 }
 
 /* If the target doesn't override, compute the cost as with arithmetic.  */
 
 int
-default_address_cost (rtx x, bool speed)
+default_address_cost (rtx x, enum machine_mode, addr_space_t, bool speed)
 {
   return rtx_cost (x, MEM, 0, speed);
 }
index 321d64fa989533b5d6fd5940535bba08c298a15e..0d23c57a3fb1f01f947867b3ee0e2123d01fdf97 100644 (file)
@@ -1758,7 +1758,7 @@ DEFHOOK
 DEFHOOK
 (address_cost,
  "",
- int, (rtx address, bool speed),
+ int, (rtx address, enum machine_mode mode, addr_space_t as, bool speed),
  default_address_cost)
 
 /* Return where to allocate pseudo for a given hard register initial value.  */