aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/rtlanal.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 07814eb..c7c1e86 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,9 +1,12 @@
+2017-05-02 Bin Cheng <bin.cheng@arm.com>
+
+ * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
+
2017-05-02 Xi Ruoyao <ryxi@stu.xidian.edu.cn>
* tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of
function tree_check2.
-
2017-05-02 Martin Liska <mliska@suse.cz>
* doc/gcov.texi: Add missing preposition.
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 321363f..f18245f 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -4164,6 +4164,14 @@ rtx_cost (rtx x, machine_mode mode, enum rtx_code outer_code,
return COSTS_N_INSNS (2 + factor);
break;
+ case TRUNCATE:
+ /* If we can tie these modes, make this cheap. */
+ if (MODES_TIEABLE_P (mode, GET_MODE (SUBREG_REG (x))))
+ {
+ total = 0;
+ break;
+ }
+ /* FALLTHRU */
default:
if (targetm.rtx_costs (x, mode, outer_code, opno, &total, speed))
return total;