This patch changes rs6000_rtx_costs to be closer to reality.  It is
still not quite right, but at least it handles more cases, so the

        (set (reg:SI) (eq:SI (reg:SI) (reg:SI)))

from the PR isn't taken as costing 1 insn anymore, while setting
a reg:DI was cost 3 insns.  The mode of the dest doesn't matter at
all here, not for any of our current scc patterns.

Testing in progress; okay for trunk?


Segher


2015-05-13  Segher Boessenkool  <seg...@kernel.crashing.org>

        PR rtl-optimization/30967
        * config/rs6000/rs6000.c (rs6000_rtx_costs): Don't consider
        destination mode for the cost of scc patterns.

---
 gcc/config/rs6000/rs6000.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index e5b8edd..1e32144 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -30631,7 +30631,7 @@ rs6000_rtx_costs (rtx x, int code, int outer_code, int 
opno ATTRIBUTE_UNUSED,
                *total = COSTS_N_INSNS (2);
              return true;
            }
-         else if (mode == Pmode)
+         else
            {
              *total = COSTS_N_INSNS (3);
              return false;
-- 
1.8.1.4

Reply via email to