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 <[email protected]>
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