* rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
authorBin Cheng <bin.cheng@arm.com>
Tue, 2 May 2017 15:57:45 +0000 (15:57 +0000)
committerBin Cheng <amker@gcc.gnu.org>
Tue, 2 May 2017 15:57:45 +0000 (15:57 +0000)
From-SVN: r247509

gcc/ChangeLog
gcc/rtlanal.c

index 07814eb6bb3d119cc7f7494f88ea1a130d31ed12..c7c1e86ba01d5a2356e79c307f6d8714d2b18e19 100644 (file)
@@ -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.
index 321363f9746014c175506a8ed5cf1ae5b710f38d..f18245fb557dae3b455b3fb86b1a911a276e322e 100644 (file)
@@ -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;