aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-12-05 10:04:24 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2019-12-05 10:04:24 +0100
commitca45475532cfba964304eb54ea7df4311469f6c2 (patch)
tree2f34567f9dbfdbe07cd9a2ec30bf21acff543c87 /gcc
parentd0c4f314cfd1fcdf85fb8f2661a8a741447772f8 (diff)
downloadgcc-ca45475532cfba964304eb54ea7df4311469f6c2.zip
gcc-ca45475532cfba964304eb54ea7df4311469f6c2.tar.gz
gcc-ca45475532cfba964304eb54ea7df4311469f6c2.tar.bz2
re PR target/92791 (ICE in extract_insn, at recog.c:2311 since r278645)
PR target/92791 * config/i386/i386.md (movstrict<mode>): Move test for TARGET_PARTIAL_REG_STALL and not optimizing for size from expander's condition to the body - FAIL; in that case. From-SVN: r278989
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md5
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7f44667..9bb7623 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2019-12-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/92791
+ * config/i386/i386.md (movstrict<mode>): Move test for
+ TARGET_PARTIAL_REG_STALL and not optimizing for size from
+ expander's condition to the body - FAIL; in that case.
+
2019-12-03 Martin Sebor <msebor@redhat.com>
PR middle-end/91582
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 2d43992..66a6f20 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -2801,10 +2801,11 @@
(define_expand "movstrict<mode>"
[(set (strict_low_part (match_operand:SWI12 0 "register_operand"))
(match_operand:SWI12 1 "general_operand"))]
- "!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun)"
+ ""
{
gcc_assert (SUBREG_P (operands[0]));
- if (GET_MODE_CLASS (GET_MODE (SUBREG_REG (operands[0]))) != MODE_INT)
+ if ((TARGET_PARTIAL_REG_STALL && optimize_function_for_speed_p (cfun))
+ || GET_MODE_CLASS (GET_MODE (SUBREG_REG (operands[0]))) != MODE_INT)
FAIL;
})