From 7be65e79f68d862f912de22f1c2c61f31ae8e722 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Wed, 10 Oct 2018 17:02:47 +0200 Subject: [PATCH] re PR target/87573 (error: could not split insn since r264877) 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 | 5 +++++ gcc/config/i386/mmx.md | 9 ++++++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/pr87573.c | 12 ++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr87573.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ced143cacd6..b1f4d7f5eb7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-10-10 Uros Bizjak + + PR target/87573 + * config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter. + 2018-10-10 Jakub Jelinek PR target/87550 diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 539671ce4be..e60b2296ab6 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -217,7 +217,14 @@ (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;") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 82417134db0..9586d1e3267 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-10-10 Uros Bizjak + + PR target/87573 + * gcc.target/i386/pr87573.c: New test. + 2018-10-10 Jakub Jelinek 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 index 00000000000..06ef4dccc08 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr87573.c @@ -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}; +} -- 2.30.2