aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-05-15 17:19:10 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2012-05-15 17:19:10 +0200
commit64137a35b55d65be8e9c515b7393840550b71aac (patch)
tree14e9e1948be9eb04afb20dc19f71e139339cd67a /gcc/config
parentd02924ef4968840d16aa5c2e187576e1206d051e (diff)
downloadgcc-64137a35b55d65be8e9c515b7393840550b71aac.zip
gcc-64137a35b55d65be8e9c515b7393840550b71aac.tar.gz
gcc-64137a35b55d65be8e9c515b7393840550b71aac.tar.bz2
re PR target/53358 (ICE due to TARGET_READ_MODIFY_WRITE peephole2)
PR target/53358 * config/i386/i386.md (*addqi_2 peephole with QImode addition): Check that operands[2] is either immediate, or q_regs_operand. * gcc.dg/pr53358.c: New test. From-SVN: r187544
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386.md3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 01e2421..67281d8 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -17465,6 +17465,9 @@
"(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())
&& peep2_reg_dead_p (4, operands[0])
&& !reg_overlap_mentioned_p (operands[0], operands[1])
+ && (<MODE>mode != QImode
+ || immediate_operand (operands[2], QImode)
+ || q_regs_operand (operands[2], QImode))
&& ix86_match_ccmode (peep2_next_insn (3),
(GET_CODE (operands[3]) == PLUS
|| GET_CODE (operands[3]) == MINUS)