re PR target/87573 (error: could not split insn since r264877)
authorUros Bizjak <ubizjak@gmail.com>
Wed, 10 Oct 2018 15:02:47 +0000 (17:02 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 10 Oct 2018 15:02:47 +0000 (17:02 +0200)
PR target/87573
* config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter.

testsuite/ChangeLog:

PR target/87573
* gcc.target/i386/pr87573.c: New test.

From-SVN: r265019

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

index ced143cacd6739add35ccbf6ce144fe8a678fd77..b1f4d7f5eb799f4a813cbac591aed8ead213615c 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/87573
+       * config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter.
+
 2018-10-10  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/87550
index 539671ce4be5be805a70e4a03802cfd4c1223507..e60b2296ab6b102752434c9d649c0994953bce1b 100644 (file)
 
 (define_split
   [(set (match_operand:MMXMODE 0 "nonimmediate_gr_operand")
-        (match_operand:MMXMODE 1 "general_gr_operand"))]
+        (match_operand:MMXMODE 1 "nonimmediate_gr_operand"))]
+  "!TARGET_64BIT && reload_completed"
+  [(const_int 0)]
+  "ix86_split_long_move (operands); DONE;")
+
+(define_split
+  [(set (match_operand:MMXMODE 0 "nonimmediate_gr_operand")
+        (match_operand:MMXMODE 1 "const0_operand"))]
   "!TARGET_64BIT && reload_completed"
   [(const_int 0)]
   "ix86_split_long_move (operands); DONE;")
index 82417134db046cc9bdd33464677b85d33cea9f06..9586d1e32677f0612c4ae7b2e7984a1f7f8c6fa7 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/87573
+       * gcc.target/i386/pr87573.c: New test.
+
 2018-10-10  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/87550
diff --git a/gcc/testsuite/gcc.target/i386/pr87573.c b/gcc/testsuite/gcc.target/i386/pr87573.c
new file mode 100644 (file)
index 0000000..06ef4dc
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR target/87573 */
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O1 -mmmx -mno-sse" } */
+
+typedef char __v8qi __attribute__((vector_size(8)));
+
+__v8qi e;
+
+void f (void)
+{
+  e = (__v8qi) {0, 0, 0, 0, 0, 0, 0, 0};
+}