aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2015-04-29 20:58:25 +0000
committerUros Bizjak <ubizjak@gmail.com>2015-04-29 20:58:25 +0000
commit6745b82c9814acfb0013a1750d9f1aab2e6f99af (patch)
tree8ad54ca6c0726a88af895221f33a0b6fc7107f25 /gcc/config/i386
parent06344d82945d2ee3f7c3f1f196f6f0291a161e7b (diff)
PR target/65871
* config/i386/i386.md (*bmi_bextr_<mode>_cczonly): New pattern. (*bmi2_bzhi_<mode>3_1_cczonly): Ditto. (setcc+movzbl peephole2): Check also clobbered reg. (setcc+andl peephole2): Ditto. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@222592 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386')
-rw-r--r--gcc/config/i386/i386.md8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 060ffa8ab84..5cac713e5a3 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -11567,7 +11567,9 @@
(zero_extend (match_dup 1)))]
"(peep2_reg_dead_p (3, operands[1])
|| operands_match_p (operands[1], operands[3]))
- && ! reg_overlap_mentioned_p (operands[3], operands[0])"
+ && ! reg_overlap_mentioned_p (operands[3], operands[0])
+ && ! (GET_CODE (operands[4]) == CLOBBER
+ && reg_mentioned_p (operands[3], operands[4]))"
[(parallel [(set (match_dup 5) (match_dup 0))
(match_dup 4)])
(set (strict_low_part (match_dup 6))
@@ -11610,7 +11612,9 @@
(clobber (reg:CC FLAGS_REG))])]
"(peep2_reg_dead_p (3, operands[1])
|| operands_match_p (operands[1], operands[3]))
- && ! reg_overlap_mentioned_p (operands[3], operands[0])"
+ && ! reg_overlap_mentioned_p (operands[3], operands[0])
+ && ! (GET_CODE (operands[4]) == CLOBBER
+ && reg_mentioned_p (operands[3], operands[4]))"
[(parallel [(set (match_dup 5) (match_dup 0))
(match_dup 4)])
(set (strict_low_part (match_dup 6))