diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2017-02-14 18:52:37 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2017-02-14 18:52:37 +0100 |
commit | 95d966091d95ada985eacfaf8664acaa6ef33df6 (patch) | |
tree | 7e2451351c6b1e1919c0063ee4bca1631a082257 /gcc | |
parent | 6f207d5810934c0156cda61a12a56ff1915adb79 (diff) | |
download | gcc-95d966091d95ada985eacfaf8664acaa6ef33df6.zip gcc-95d966091d95ada985eacfaf8664acaa6ef33df6.tar.gz gcc-95d966091d95ada985eacfaf8664acaa6ef33df6.tar.bz2 |
re PR target/79495 (ICE in extract_constrain_insn, at recog.c:2213)
PR target/79495
* config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
testsuite/ChangeLog:
2017-02-14 Uros Bizjak <ubizjak@gmail.com>
PR target/79495
* gcc.target/i386/pr79495.c: New test.
From-SVN: r245441
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 14 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr79495.c | 11 |
4 files changed, 28 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a4c2c4..9bb58c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-02-14 Uros Bizjak <ubizjak@gmail.com> + + PR target/79495 + * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative. + 2017-02-14 H.J. Lu <hongjiu.lu@intel.com> PR target/79498 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 3af1ffc..9d4dc38 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -3248,9 +3248,9 @@ ;; in alternatives 4, 6, 7 and 8. (define_insn "*movxf_internal" [(set (match_operand:XF 0 "nonimmediate_operand" - "=f,m,f,?r ,!o,?*r ,!o,!o,!o,r ,o") + "=f,m,f,?r ,!o,?*r ,!o,!o,!o,r ,o ,o") (match_operand:XF 1 "general_operand" - "fm,f,G,roF,r , *roF,*r,F ,C,roF,rF"))] + "fm,f,G,roF,r ,*roF,*r,F ,C ,roF,rF,rC"))] "!(MEM_P (operands[0]) && MEM_P (operands[1])) && (lra_in_progress || reload_completed || !CONST_DOUBLE_P (operands[1]) @@ -3277,19 +3277,19 @@ } } [(set (attr "isa") - (cond [(eq_attr "alternative" "7") + (cond [(eq_attr "alternative" "7,10") (const_string "nox64") - (eq_attr "alternative" "8") + (eq_attr "alternative" "8,11") (const_string "x64") ] (const_string "*"))) (set (attr "type") - (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10") + (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10,11") (const_string "multi") ] (const_string "fmov"))) (set (attr "mode") - (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10") + (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10,11") (if_then_else (match_test "TARGET_64BIT") (const_string "DI") (const_string "SI")) @@ -3300,7 +3300,7 @@ (symbol_ref "false")] (symbol_ref "true"))) (set (attr "enabled") - (cond [(eq_attr "alternative" "9,10") + (cond [(eq_attr "alternative" "9,10,11") (if_then_else (match_test "TARGET_HARD_XF_REGS") (symbol_ref "false") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index be1ea5c..429762a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-02-14 Uros Bizjak <ubizjak@gmail.com> + + PR target/79495 + * gcc.target/i386/pr79495.c: New test. + 2017-02-14 Marek Polacek <polacek@redhat.com> PR c++/79420 diff --git a/gcc/testsuite/gcc.target/i386/pr79495.c b/gcc/testsuite/gcc.target/i386/pr79495.c new file mode 100644 index 0000000..27f48fa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr79495.c @@ -0,0 +1,11 @@ +/* PR target/79495 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -msoft-float" } */ + +long double dnan = 1.0l/0.0l - 1.0l/0.0l; +long double x = 1.0l; +void fn1 (void) +{ + if (dnan != x) + x = 1.0; +} |