]> git.pld-linux.org Git - packages/gcc.git/commitdiff
- fix "could not split insn" with "-O1 -ffast-math".
authorPaweł Sikora <pluto@pld-linux.org>
Mon, 26 Sep 2005 08:48:48 +0000 (08:48 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    gcc-pr24055.patch -> 1.1

gcc-pr24055.patch [new file with mode: 0644]

diff --git a/gcc-pr24055.patch b/gcc-pr24055.patch
new file mode 100644 (file)
index 0000000..3f1c511
--- /dev/null
@@ -0,0 +1,78 @@
+--- gcc-4.1/gcc/config/i386/i386.md    2005-09-06 10:53:06.000000000 +0200
++++ gcc-4.1/gcc/config/i386/i386.md    2005-09-26 10:42:34.581839750 +0200
+@@ -16475,9 +16475,9 @@
+   DONE;
+ })
+-(define_insn_and_split "*fist<mode>2_1"
+-  [(set (match_operand:X87MODEI 0 "nonimmediate_operand" "=m,?r")
+-      (unspec:X87MODEI [(match_operand:XF 1 "register_operand" "f,f")]
++(define_insn_and_split "*fistdi2_1"
++  [(set (match_operand:DI 0 "nonimmediate_operand" "=m,?r")
++      (unspec:DI [(match_operand:XF 1 "register_operand" "f,f")]
+        UNSPEC_FIST))]
+   "TARGET_USE_FANCY_MATH_387
+    && flag_unsafe_math_optimizations
+@@ -16487,17 +16487,17 @@
+   [(const_int 0)]
+ {
+   if (memory_operand (operands[0], VOIDmode))
+-    emit_insn (gen_fist<mode>2 (operands[0], operands[1]));
++    emit_insn (gen_fistdi2 (operands[0], operands[1]));
+   else
+     {
+-      operands[2] = assign_386_stack_local (<MODE>mode, SLOT_TEMP);
+-      emit_insn (gen_fist<mode>2_with_temp (operands[0], operands[1],
+-                                          operands[2]));
++      operands[2] = assign_386_stack_local (DImode, SLOT_TEMP);
++      emit_insn (gen_fistdi2_with_temp (operands[0], operands[1],
++                                       operands[2]));
+     }
+   DONE;
+ }
+   [(set_attr "type" "fpspc")
+-   (set_attr "mode" "<MODE>")])
++   (set_attr "mode" "DI")])
+ (define_insn "fistdi2"
+   [(set (match_operand:DI 0 "memory_operand" "=m")
+@@ -16545,6 +16545,25 @@
+             (clobber (match_dup 3))])]
+   "")
++(define_insn_and_split "*fist<mode>2_1"
++  [(set (match_operand:X87MODEI12 0 "register_operand" "=r")
++      (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f")]
++       UNSPEC_FIST))]
++  "TARGET_USE_FANCY_MATH_387
++   && flag_unsafe_math_optimizations
++   && !(reload_completed || reload_in_progress)"
++  "#"
++  "&& 1"
++  [(const_int 0)]
++{
++  operands[2] = assign_386_stack_local (<MODE>mode, SLOT_TEMP);
++  emit_insn (gen_fist<mode>2_with_temp (operands[0], operands[1],
++                                      operands[2]));
++  DONE;
++}
++  [(set_attr "type" "fpspc")
++   (set_attr "mode" "<MODE>")])
++
+ (define_insn "fist<mode>2"
+   [(set (match_operand:X87MODEI12 0 "memory_operand" "=m")
+       (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f")]
+@@ -16556,10 +16575,10 @@
+    (set_attr "mode" "<MODE>")])
+ (define_insn "fist<mode>2_with_temp"
+-  [(set (match_operand:X87MODEI12 0 "nonimmediate_operand" "=m,?r")
+-      (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f,f")]
++  [(set (match_operand:X87MODEI12 0 "register_operand" "=r")
++      (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f")]
+        UNSPEC_FIST))
+-   (clobber (match_operand:X87MODEI12 2 "memory_operand" "=m,m"))]
++   (clobber (match_operand:X87MODEI12 2 "memory_operand" "=m"))]
+   "TARGET_USE_FANCY_MATH_387
+    && flag_unsafe_math_optimizations"
+   "#"
This page took 0.037857 seconds and 4 git commands to generate.