diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-05-15 17:19:10 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-05-15 17:19:10 +0200 |
commit | 64137a35b55d65be8e9c515b7393840550b71aac (patch) | |
tree | 14e9e1948be9eb04afb20dc19f71e139339cd67a /gcc/config | |
parent | d02924ef4968840d16aa5c2e187576e1206d051e (diff) | |
download | gcc-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.md | 3 |
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) |