re PR target/65576 (ICE in gcc.c-torture/compile/pr33855.c)
authorAlan Modra <amodra@gmail.com>
Fri, 3 Apr 2015 23:16:26 +0000 (09:46 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Fri, 3 Apr 2015 23:16:26 +0000 (09:46 +1030)
PR target/65576
PR target/65240
* config/rs6000/predicates.md (zero_reg_mem_operand): Exclude
0.0 constant unless TARGET_VSX.
* config/rs6000/rs6000.md (extenddftf2_internal): Remove last
alternative.

From-SVN: r221862

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

index 03e8e3e3a355322fcb65cf7710a37a89b7fd4285..d29f29a82b3ebe2a82da61984b782aba5eb66093 100644 (file)
@@ -1,3 +1,12 @@
+2015-04-04  Alan Modra  <amodra@gmail.com>
+
+       PR target/65576
+       PR target/65240
+       * config/rs6000/predicates.md (zero_reg_mem_operand): Exclude
+       0.0 constant unless TARGET_VSX.
+       * config/rs6000/rs6000.md (extenddftf2_internal): Remove last
+       alternative.
+
 2015-04-03  Jan Hubicka  <hubicka@ucw.cz>
 
        PR ipa/65648
index 6abb40b5cffaaa9370476763de37467953e1ce73..3c8dfe6032d2c0acaaf345f08bbf14d0dec432d9 100644 (file)
 
 ;; Return 1 if the operand is CONST_DOUBLE 0, register or memory operand.
 (define_predicate "zero_reg_mem_operand"
-  (ior (match_operand 0 "zero_fp_constant")
+  (ior (and (match_test "TARGET_VSX")
+           (match_operand 0 "zero_fp_constant"))
        (match_operand 0 "reg_or_mem_operand")))
 
 ;; Return 1 if the operand is a CONST_INT and it is the element for 64-bit
index da9628770570b2e87dff776c7fe7544f37875ec9..5025e6080a3bea49a833f0e21dcca6b48403f89a 100644 (file)
 })
 
 (define_insn_and_split "*extenddftf2_internal"
-  [(set (match_operand:TF 0 "nonimmediate_operand" "=m,Y,ws,d,&d,r")
-       (float_extend:TF (match_operand:DF 1 "input_operand" "d,r,md,md,md,rm")))
-   (use (match_operand:DF 2 "zero_reg_mem_operand" "d,r,j,m,d,n"))]
+  [(set (match_operand:TF 0 "nonimmediate_operand" "=m,Y,ws,d,&d")
+       (float_extend:TF (match_operand:DF 1 "input_operand" "d,r,md,md,md")))
+   (use (match_operand:DF 2 "zero_reg_mem_operand" "d,r,j,m,d"))]
   "!TARGET_IEEEQUAD
    && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT 
    && TARGET_LONG_DOUBLE_128"