]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/45946 (ICE: in extract_insn, at recog.c:2127 when using _Decimal128...
authorUros Bizjak <ubizjak@gmail.com>
Fri, 22 Oct 2010 15:15:16 +0000 (17:15 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 22 Oct 2010 15:15:16 +0000 (17:15 +0200)
PR target/45946
* config/i386/i386.md (*pushti2): New insn pattern.
(pushti2 splitter): New insn splitter.

testsuite/ChangLog:

PR target/45946
* gcc.target/i386/pr45946.c: New test.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
From-SVN: r165836

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr45946.c [new file with mode: 0644]

index d027c552aa6094d44584b93b025db88d89e921fa..6b5b2d9b419580587a2501b881ac2faef00b43cd 100644 (file)
@@ -1,3 +1,9 @@
+2010-10-22  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/45946
+       * config/i386/i386.md (*pushti2): New insn pattern.
+       (pushti2 splitter): New insn splitter.
+
 2010-10-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        PR target/45820
index a523bc9923f67ea4ebfd270fe505e99fb76b0a71..3522658bc5551cfeecfca4484778ca1181358d18 100644 (file)
   DONE;
 })
 
+(define_insn "*pushti"
+  [(set (match_operand:TI 0 "push_operand" "=<")
+       (match_operand:TI 1 "general_no_elim_operand" "riF*m"))]
+  "TARGET_64BIT"
+  "#")
+
 (define_insn "*movti_internal"
   [(set (match_operand:TI 0 "nonimmediate_operand" "=x,x,m")
        (match_operand:TI 1 "vector_move_operand" "C,xm,x"))]
                   (const_string "TI"))]
               (const_string "DI")))])
 
+(define_split
+  [(set (match_operand:TI 0 "push_operand" "")
+        (match_operand:TI 1 "general_operand" ""))]
+  "TARGET_64BIT && reload_completed
+   && !SSE_REG_P (operands[1])"
+  [(const_int 0)]
+  "ix86_split_long_move (operands); DONE;")
+
 (define_split
   [(set (match_operand:TI 0 "nonimmediate_operand" "")
         (match_operand:TI 1 "general_operand" ""))]
index 8ab1e45fcb28c40b8634870df1364f465db0d973..85d0aca3866fc08442ae387a1cd7633aa47f1e42 100644 (file)
@@ -1,3 +1,9 @@
+2010-10-22  Uros Bizjak  <ubizjak@gmail.com>
+           H.J. Lu  <hongjiu.lu@intel.com>
+
+           PR target/45946
+           * gcc.target/i386/pr45946.c: New test.
+
 2010-09-18  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/45709
diff --git a/gcc/testsuite/gcc.target/i386/pr45946.c b/gcc/testsuite/gcc.target/i386/pr45946.c
new file mode 100644 (file)
index 0000000..81cd360
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target dfp } */
+/* { dg-options "-std=gnu99 -Os -fno-omit-frame-pointer" } */
+
+void
+__attribute__((noinline))
+bar (_Decimal128, _Decimal128, _Decimal128, _Decimal128, _Decimal128,
+     _Decimal128, _Decimal128, _Decimal128, _Decimal128);
+
+void
+foo (void)
+{
+  bar (0, 0, 0, 0, 0, 0, 0, 0, 0);
+}