]> 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 12:29:03 +0000 (14:29 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 22 Oct 2010 12:29:03 +0000 (14:29 +0200)
PR target/45946
* config/i386/i386.md (*pushti2): New insn pattern.
(pushti2 splitter): New insn splitter.

testsuite/ChangeLog:

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

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

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

index 063345d43fa083e379c55347cd41e2ca275220d8..8679b06695a52dff748c1c9cb76ea76c267f50e4 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-20  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR fortran/42169
index 17eddfd82c823a1b059ea61c60fbfb94a2b1b597..a5423e7e65091e22d8e85a38165bb0f33ea6af77 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 bd0d7d2c09317f2051c2c7c3a44e0afad7bd1039..21471b7d22d5228a032dfe7c630f32769e009c4f 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-10-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        Backport from mainline:
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);
+}