rs6000: Fix an ICE with -mno-direct-move (PR85291)
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 12 Apr 2018 20:01:37 +0000 (22:01 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 12 Apr 2018 20:01:37 +0000 (22:01 +0200)
PR target/85291
* config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
asked to not generate direct moves.
(fix_trunc<mode>si2_stfiwx): Similar.
(fix_trunc<mode>si2_internal): Similar.

From-SVN: r259354

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index 08c2540..b934cc1 100644 (file)
@@ -1,3 +1,11 @@
+2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/85291
+       * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
+       asked to not generate direct moves.
+       (fix_trunc<mode>si2_stfiwx): Similar.
+       (fix_trunc<mode>si2_internal): Similar.
+
 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/83157
index b07e5bd..931c808 100644 (file)
        (fix:SI (match_operand:SFDF 1 "gpc_reg_operand")))]
   "TARGET_HARD_FLOAT && <TARGET_FLOAT>"
 {
-  if (!TARGET_P8_VECTOR)
+  if (!(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE))
     {
       rtx src = force_reg (<MODE>mode, operands[1]);
 
   "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT
    && (<MODE>mode != SFmode || TARGET_SINGLE_FLOAT)
    && TARGET_STFIWX && can_create_pseudo_p ()
-   && !TARGET_P8_VECTOR"
+   && !(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE)"
   "#"
   ""
   [(pc)]
        (fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d,<rreg>")))
    (clobber (match_operand:DI 2 "gpc_reg_operand" "=1,d"))
    (clobber (match_operand:DI 3 "offsettable_mem_operand" "=o,o"))]
-  "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && !TARGET_P8_VECTOR"
+  "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT
+   && !(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE)"
   "#"
   ""
   [(pc)]