diff options
author | Alan Modra <amodra@gmail.com> | 2015-04-04 09:46:26 +1030 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2015-04-04 09:46:26 +1030 |
commit | 69223faeb3a01ea6f41db002e6a1e907dad8e4a7 (patch) | |
tree | 33e2eb06adf657ea815516c20f91ff924d2fe195 /gcc | |
parent | f107227ba73fc6978c33672ecc5ab701a9e2413c (diff) | |
download | gcc-69223faeb3a01ea6f41db002e6a1e907dad8e4a7.zip gcc-69223faeb3a01ea6f41db002e6a1e907dad8e4a7.tar.gz gcc-69223faeb3a01ea6f41db002e6a1e907dad8e4a7.tar.bz2 |
re PR target/65576 (ICE in gcc.c-torture/compile/pr33855.c)
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/rs6000/predicates.md | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 6 |
3 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03e8e3e..d29f29a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index 6abb40b..3c8dfe6 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -964,7 +964,8 @@ ;; 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 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index da96287..5025e60 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -8369,9 +8369,9 @@ }) (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" |