diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-10 23:29:59 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-10 23:29:59 +0000 |
commit | 097a1c0bcf82a656ccc50121c800cb1b9ce16d5f (patch) | |
tree | 54e59b494ea3f189280a62389db0ee8dca762d42 /gcc/config/i386/i386.md | |
parent | 9974fcd7bc05d1fa05695e4750a28a056aecfa44 (diff) | |
download | gcc-097a1c0bcf82a656ccc50121c800cb1b9ce16d5f.tar.gz |
2014-11-11 Uros Bizjak <ubizjak@gmail.com>
Revert:
2014-10-31 Uros Bizjak <ubizjak@gmail.com>
PR target/63620
* config/i386/i386-protos.h (ix86_use_pseudo_pic_reg): Declare.
* config/i386/i386.c (ix86_use_pseudo_pic_reg): Export.
* config/i386/i386.md (*pushtf): Allow only CONST_DOUBLEs that won't
be reloaded through memory.
(*pushxf): Ditto.
(*pushdf): Ditto.
testsuite/ChangeLog:
2014-11-11 Uros Bizjak <ubizjak@gmail.com>
Ilya Enkovich <ilya.enkovich@intel.com>
PR target/63620
* gcc.target/i386/pr63620.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217325 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r-- | gcc/config/i386/i386.md | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index f2b878817cf..0df66ea6c0a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -2779,15 +2779,10 @@ ;; Floating point push instructions. -;; %%% Remove CONST_DOUBLE workaround after PR63620 is fixed! (define_insn "*pushtf" [(set (match_operand:TF 0 "push_operand" "=<,<") (match_operand:TF 1 "general_no_elim_operand" "x,*roF"))] - "(TARGET_64BIT || TARGET_SSE) - && (!ix86_use_pseudo_pic_reg () - || !can_create_pseudo_p () - || GET_CODE (operands[1]) != CONST_DOUBLE - || standard_sse_constant_p (operands[1]))" + "TARGET_64BIT || TARGET_SSE" { /* This insn should be already split before reg-stack. */ gcc_unreachable (); @@ -2809,14 +2804,10 @@ operands[0] = replace_equiv_address (operands[0], stack_pointer_rtx); }) -;; %%% Remove CONST_DOUBLE workaround after PR63620 is fixed! (define_insn "*pushxf" [(set (match_operand:XF 0 "push_operand" "=<,<") (match_operand:XF 1 "general_no_elim_operand" "f,Yx*roF"))] - "!ix86_use_pseudo_pic_reg () - || !can_create_pseudo_p () - || GET_CODE (operands[1]) != CONST_DOUBLE - || standard_80387_constant_p (operands[1]) > 0" + "" { /* This insn should be already split before reg-stack. */ gcc_unreachable (); @@ -2844,17 +2835,10 @@ operands[0] = replace_equiv_address (operands[0], stack_pointer_rtx); }) -;; %%% Remove CONST_DOUBLE workaround after PR63620 is fixed! (define_insn "*pushdf" [(set (match_operand:DF 0 "push_operand" "=<,<,<,<") (match_operand:DF 1 "general_no_elim_operand" "f,Yd*roF,rmF,x"))] - "!ix86_use_pseudo_pic_reg () - || !can_create_pseudo_p () - || GET_CODE (operands[1]) != CONST_DOUBLE - || (!(TARGET_SSE2 && TARGET_SSE_MATH) - && standard_80387_constant_p (operands[1]) > 0) - || (TARGET_SSE2 && TARGET_SSE_MATH - && standard_sse_constant_p (operands[1]))" + "" { /* This insn should be already split before reg-stack. */ gcc_unreachable (); |