* rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
authorBin Cheng <bin.cheng@arm.com>
Thu, 11 May 2017 09:10:01 +0000 (09:10 +0000)
committerBin Cheng <amker@gcc.gnu.org>
Thu, 11 May 2017 09:10:01 +0000 (09:10 +0000)
From-SVN: r247881

gcc/ChangeLog
gcc/rtlanal.c

index 5c3f57940fb735d371df2f5cf270a32ee26b49ad..9fe29bd6aa98181b913e0d905b5bfe3957fe7945 100644 (file)
@@ -1,3 +1,7 @@
+2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+
+       * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
+
 2017-05-11  Richard Biener  <rguenther@suse.de>
 
        * passes.c (execute_function_todo): Verify loops if they are
index 321363f9746014c175506a8ed5cf1ae5b710f38d..d9f57c30d8e6f01172e090a9077321b0d3216420 100644 (file)
@@ -4164,6 +4164,13 @@ rtx_cost (rtx x, machine_mode mode, enum rtx_code outer_code,
        return COSTS_N_INSNS (2 + factor);
       break;
 
+    case TRUNCATE:
+      if (MODES_TIEABLE_P (mode, GET_MODE (XEXP (x, 0))))
+       {
+         total = 0;
+         break;
+       }
+      /* FALLTHRU */
     default:
       if (targetm.rtx_costs (x, mode, outer_code, opno, &total, speed))
        return total;