sh-protos.h (fldi_ok): Remove.
authorOleg Endo <olegendo@gcc.gnu.org>
Thu, 16 Oct 2014 13:17:12 +0000 (13:17 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Thu, 16 Oct 2014 13:17:12 +0000 (13:17 +0000)
gcc/
* config/sh/sh-protos.h (fldi_ok): Remove.
* config/sh/sh.c (fldi_ok): Likewise.
(sh_secondary_reload): Don't use fldi_ok.
* config/sh/constraints.md (G constraint, H constraint): Don't use
fldi_ok.

From-SVN: r216320

gcc/ChangeLog
gcc/config/sh/constraints.md
gcc/config/sh/sh-protos.h
gcc/config/sh/sh.c

index f1754b47107e4efafb953fe6cee1a554ae089ea2..ffef98259b999426898efb7d0de2452188baad05 100644 (file)
@@ -1,3 +1,11 @@
+2014-10-16  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       * config/sh/sh-protos.h (fldi_ok): Remove.
+       * config/sh/sh.c (fldi_ok): Likewise.
+       (sh_secondary_reload): Don't use fldi_ok.
+       * config/sh/constraints.md (G constraint, H constraint): Don't use
+       fldi_ok.
+
 2014-10-16  Martin Liska  <mliska@suse.cz>
 
        * ipa-icf.c (sem_item_optimizer::process_cong_reduction):
index e75acfd69000ad800d1794d2edceb1b6dde53591..0e719201bc8b2aea1e410bc006d0deb4d1c6e3d5 100644 (file)
 (define_constraint "G"
   "Double constant 0."
   (and (match_code "const_double")
-       (match_test "fp_zero_operand (op) && fldi_ok ()")))
+       (match_test "fp_zero_operand (op)")))
 
 (define_constraint "H"
   "Double constant 1."
   (and (match_code "const_double")
-       (match_test "fp_one_operand (op) && fldi_ok ()")))
+       (match_test "fp_one_operand (op)")))
 
 ;; Extra constraints
 (define_constraint "Q"
index c12a8964d7e3e11569d2c1e00ab0a8f88940210e..ca007b9093ceea46610f0bf6569c681f7dce4379 100644 (file)
@@ -191,7 +191,6 @@ extern void sh_expand_prologue (void);
 extern void sh_expand_epilogue (bool);
 extern void sh_set_return_address (rtx, rtx);
 extern int initial_elimination_offset (int, int);
-extern bool fldi_ok (void);
 extern bool sh_hard_regno_rename_ok (unsigned int, unsigned int);
 extern bool sh_cfun_interrupt_handler_p (void);
 extern bool sh_cfun_resbank_handler_p (void);
index 065ac265fee3be8f50d6bbdfa2cd01663b58c0de..288a955dee77009b8927898026cdcdb0022a3bd2 100644 (file)
@@ -9875,19 +9875,6 @@ fp_one_operand (rtx op)
   return REAL_VALUES_EQUAL (r, dconst1);
 }
 
-/* In general mode switching is used.  If we are
-   compiling without -mfmovd, movsf_ie isn't taken into account for
-   mode switching.  We could check in machine_dependent_reorg for
-   cases where we know we are in single precision mode, but there is
-   interface to find that out during reload, so we must avoid
-   choosing an fldi alternative during reload and thus failing to
-   allocate a scratch register for the constant loading.  */
-bool
-fldi_ok (void)
-{
-  return true;
-}
-
 /* Return the TLS type for TLS symbols.  */
 enum tls_model
 tls_symbolic_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
@@ -13106,8 +13093,7 @@ sh_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
       if (REGCLASS_HAS_FP_REG (rclass)
          && ! TARGET_SHMEDIA
          && immediate_operand ((x), mode)
-         && ! ((fp_zero_operand (x) || fp_one_operand (x))
-               && mode == SFmode && fldi_ok ()))
+         && ! ((fp_zero_operand (x) || fp_one_operand (x)) && mode == SFmode))
        switch (mode)
          {
          case SFmode: