From: Jakub Jelinek Date: Thu, 16 Jun 2016 11:38:24 +0000 (+0200) Subject: re PR target/71554 (Miscompilation of __builtin_mul_overflow on i686) X-Git-Tag: releases/gcc-4.9.4~126 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=999acc743b38b11e478d45012857e1f27a3fb1bd;p=thirdparty%2Fgcc.git re PR target/71554 (Miscompilation of __builtin_mul_overflow on i686) PR target/71554 * config/i386/i386.md (setcc + movzbl peephole2): Use reg_set_p. (setcc + and peephole2): Likewise. Backported from mainline 2015-04-29 Uros Bizjak * config/i386/i386.md (setcc+movzbl peephole2): Check also clobbered reg. (setcc+andl peephole2): Ditto. From-SVN: r237522 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6ec0552202b8..b978c2c04334 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2016-06-16 Jakub Jelinek + + PR target/71554 + * config/i386/i386.md (setcc + movzbl peephole2): Use reg_set_p. + (setcc + and peephole2): Likewise. + + Backported from mainline + 2015-04-29 Uros Bizjak + + * config/i386/i386.md (setcc+movzbl peephole2): Check also clobbered + reg. + (setcc+andl peephole2): Ditto. + 2016-06-13 Richard Biener PR tree-optimization/71505 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ea02e64e818a..97a4f108712d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -11248,7 +11248,8 @@ (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]) + && ! reg_set_p (operands[3], operands[4])" [(parallel [(set (match_dup 5) (match_dup 0)) (match_dup 4)]) (set (strict_low_part (match_dup 6)) @@ -11291,7 +11292,8 @@ (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]) + && ! reg_set_p (operands[3], operands[4])" [(parallel [(set (match_dup 5) (match_dup 0)) (match_dup 4)]) (set (strict_low_part (match_dup 6))